Data Engineering Project: European Soccer ⚽️⚽️⚽️


Amr M. Kayid

Omar ElSayed

Sama AlShareef

Mayar Kamali

Zeiad Helmy
37-15594 37-6537 37-705 37-16401 37-14353
T10 T10 T10 T10 T10

Overview

What you get:

+25,000 matches +10,000 players 11 European Countries with their lead championship Seasons 2008 to 2016 Players and Teams' attributes sourced from EA Sports' FIFA video game series, including the weekly updates Team line up with squad formation (X, Y coordinates) Betting odds from up to 10 providers Detailed match events (goal types, possession, corner, cross, fouls, cards etc...) for +10,000 matches16th Oct 2016: New table containing teams' attributes from FIFA !

Original Data Source:

You can easily find data about soccer matches but they are usually scattered across different websites. A thorough data collection and processing has been done to make your life easier. I must insist that you do not make any commercial use of the data. The data was sourced from:

http://football-data.mx-api.enetscores.com/ : scores, lineup, team formation and events

http://www.football-data.co.uk/ : betting odds. Click here to understand the column naming system for betting odds:

http://sofifa.com/ : players and teams attributes from EA Sports FIFA games. FIFA series and all FIFA assets property of EA Sports.

When you have a look at the database, you will notice foreign keys for players and matches are the same as the original data sources. I have called those foreign keys "api_id".

Improving the dataset:

You will notice that some players are missing from the lineup (NULL values). This is because I have not been able to source their attributes from FIFA. This will be fixed overtime as the crawling algorithm is being improved. The dataset will also be expanded to include international games, national cups, Champion's League and Europa League. Please ask me if you're after a specific tournament.

Please get in touch with me if you want to help improve this dataset.

CLICK HERE TO ACCESS THE PROJECT GITHUB

Important note for people interested in using the crawlers: since I first wrote the crawling scripts (in python), it appears sofifa.com has changed its design and with it comes new requirements for the scripts. The existing script to crawl players ('Player Spider') will not work until i've updated it.

Exploring the data:

Now that's the fun part, there is a lot you can do with this dataset. I will be adding visuals and insights to this overview page but please have a look at the kernels and give it a try yourself ! Here are some ideas for you:

The Holy Grail... ... is obviously to predict the outcome of the game. The bookies use 3 classes (Home Win, Draw, Away Win). They get it right about 53% of the time. This is also what I've achieved so far using my own SVM. Though it may sound high for such a random sport game, you've got to know that the home team wins about 46% of the time. So the base case (constantly predicting Home Win) has indeed 46% precision.

Probabilities vs Odds

When running a multi-class classifier like SVM you could also output a probability estimate and compare it to the betting odds. Have a look at your variance vs odds and see for what games you had very different predictions.

Explore and visualize features

With access to players and teams attributes, team formations and in-game events you should be able to produce some interesting insights into The Beautiful Game . Who knows, Guardiola himself may hire one of you some day!

Libraries

In [1]:
%reload_ext autoreload
%autoreload 2
%matplotlib inline
In [2]:
# import os

# os.environ["MODIN_ENGINE"] = "ray"  # Modin will use Ray
# # os.environ["MODIN_ENGINE"] = "dask"  # Modin will use Dask
In [3]:
import io
import math
import base64
import folium
import sqlite3
import warnings
import itertools
import folium.plugins
import time, datetime

import scipy
# import psycopg2
import numpy as np
import pandas as pd
# import modin.pandas as pd
import seaborn as sns
import plotly.tools as tls
import plotly.offline as py
import plotly.graph_objs as go
import matplotlib.pyplot as plt

import scipy.ndimage

from scipy import stats
from collections import *
from matplotlib.pyplot import imread
from statsmodels.stats.power import TTestIndPower

from pathlib import Path
from datetime import timedelta
from subprocess import check_output
from matplotlib import animation, rc
from mpl_toolkits.basemap import Basemap
In [4]:
warnings.filterwarnings("ignore")
py.init_notebook_mode(connected=True)

Configs

In [5]:
PATH = Path(f'data/')
In [6]:
from IPython.core.display import HTML
from IPython.display import display

def display_tables(table_dict):
    ''' 
    Accepts a list of IpyTable objects and returns a table which contains each IpyTable in a cell
    ''' 
    template = """<div style="float: left; padding: 10px;">
                    <p style='font-family:"Courier New", Courier, monospace'>
                    <strong>{0}</strong></p>{1}</div>"""
    
    return HTML(
        '<table><tr style="background-color:white;">' + 
        '\n\n'.join(['<td>' + template.format(repr(key), table._repr_html_()) +
                     '</td>' for key, table in table_dict.items()]) +
        '</tr></table>'
    )

Data Loading and Parsing

In [7]:
class DataBunch:
    __dfs__ = ['countries', 'leagues', 'matches', 'players', 
               'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences']
    
    @classmethod
    def connect(cls, path):
        connection = sqlite3.connect(str(path/'database.sqlite'))
        return connection
    
    def __init__(self, path):
        self.path = path
        self.connection = DataBunch.connect(path)
        self.tables = self.get_all_tables(self.connection)
        self.dfs = dict.fromkeys(DataBunch.__dfs__ , None)
        self.lat_long = pd.read_excel(path/'latlong.xlsx', sheet_name="Sheet1")
        self.set_tables(self.tables, self.connection)

    def get_all_tables(self, connection):
        cursor = connection.cursor()
        cursor.execute(f"SELECT name FROM sqlite_master WHERE type='table';")
        tables = cursor.fetchall()
        table_names = sorted([table[0] for table in tables])
        return table_names

    def set_tables(self, table_names, connection):
        dataframes = {}
        for i, name in enumerate(table_names):
            print(f'Processing {i}: {DataBunch.__dfs__[i]} dataframe | from {name} table')
            dataframes[DataBunch.__dfs__[i]] = pd.read_sql_query(
                f"SELECT * from {name}", connection)
        for key, value in dataframes.items():
            setattr(self, f'_{key}_df', value)
            self.dfs[key] = value
            
    def describe_and_check_nulls(self):
        
        cmap = cmap=sns.diverging_palette(5, 250, as_cmap=True)

        def magnify():
            return [dict(selector="th",
                         props=[("font-size", "7pt")]),
                    dict(selector="td",
                         props=[('padding', "0em 0em")]),
                    dict(selector="th:hover",
                         props=[("font-size", "12pt")]),
                    dict(selector="tr:hover td:hover",
                         props=[('max-width', '200px'),
                                ('font-size', '12pt')])
        ]

        dfs_with_nulls = {}
        for name, df in self.dfs.items():
            print('=' * 50 +  f' {name} ' + '=' * 50)
            print(f'{name} INFO:')
            display(df.info())
            print()
            print(f'{name} Describtion:')
            display(df.describe().transpose())
            print()
            print(f'{name} Correlations:')
            corr = df.corr()
            display(corr.style.background_gradient(cmap, axis=1)\
                    .set_properties(**{'max-width': '80px', 'font-size': '10pt'})\
                    .set_caption("Hover to magify")\
                    .set_precision(2)\
                    .set_table_styles(magnify()))
            print()
            print(f'{name} NULLs:')
            display(df.isnull().sum())
            if df.isnull().sum().any():
                print(f'Found df {name} with nulls.....')
                dfs_with_nulls[name] = df
            print('\n'*5)
        return dfs_with_nulls
In [8]:
db = DataBunch(PATH)
Processing 0: countries dataframe | from Country table
Processing 1: leagues dataframe | from League table
Processing 2: matches dataframe | from Match table
Processing 3: players dataframe | from Player table
Processing 4: player_attributes dataframe | from Player_Attributes table
Processing 5: teams dataframe | from Team table
Processing 6: team_attributes dataframe | from Team_Attributes table
Processing 7: sqlite_sequences dataframe | from sqlite_sequence table
In [9]:
db.__dict__.keys()
Out[9]:
dict_keys(['path', 'connection', 'tables', 'dfs', 'lat_long', '_countries_df', '_leagues_df', '_matches_df', '_players_df', '_player_attributes_df', '_teams_df', '_team_attributes_df', '_sqlite_sequences_df'])
In [10]:
db.dfs.keys()
Out[10]:
dict_keys(['countries', 'leagues', 'matches', 'players', 'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences'])

Display All tables in the databse

In [11]:
display_tables(db.dfs)
Out[11]:

'countries'

id name
0 1 Belgium
1 1729 England
2 4769 France
3 7809 Germany
4 10257 Italy
5 13274 Netherlands
6 15722 Poland
7 17642 Portugal
8 19694 Scotland
9 21518 Spain
10 24558 Switzerland

'leagues'

id country_id name
0 1 1 Belgium Jupiler League
1 1729 1729 England Premier League
2 4769 4769 France Ligue 1
3 7809 7809 Germany 1. Bundesliga
4 10257 10257 Italy Serie A
5 13274 13274 Netherlands Eredivisie
6 15722 15722 Poland Ekstraklasa
7 17642 17642 Portugal Liga ZON Sagres
8 19694 19694 Scotland Premier League
9 21518 21518 Spain LIGA BBVA
10 24558 24558 Switzerland Super League

'matches'

id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... SJA VCH VCD VCA GBH GBD GBA BSH BSD BSA
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 4.00 1.65 3.40 4.50 1.78 3.25 4.00 1.73 3.40 4.20
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.80 2.00 3.25 3.25 1.85 3.25 3.75 1.91 3.25 3.60
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 2.50 2.35 3.25 2.65 2.50 3.20 2.50 2.30 3.20 2.75
3 4 1 1 2008/2009 1 2008-08-17 00:00:00 492476 9991 9998 5 ... 7.50 1.45 3.75 6.50 1.50 3.75 5.50 1.44 3.75 6.50
4 5 1 1 2008/2009 1 2008-08-16 00:00:00 492477 7947 9985 1 ... 1.73 4.50 3.40 1.65 4.50 3.50 1.65 4.75 3.30 1.67
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
25974 25975 24558 24558 2015/2016 9 2015-09-22 00:00:00 1992091 10190 10191 1 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25975 25976 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992092 9824 10199 1 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25976 25977 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992093 9956 10179 2 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25977 25978 24558 24558 2015/2016 9 2015-09-22 00:00:00 1992094 7896 10243 0 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25978 25979 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992095 10192 9931 4 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

25979 rows × 115 columns

'players'

id player_api_id player_name player_fifa_api_id birthday height weight
0 1 505942 Aaron Appindangoye 218353 1992-02-29 00:00:00 182.88 187
1 2 155782 Aaron Cresswell 189615 1989-12-15 00:00:00 170.18 146
2 3 162549 Aaron Doran 186170 1991-05-13 00:00:00 170.18 163
3 4 30572 Aaron Galindo 140161 1982-05-08 00:00:00 182.88 198
4 5 23780 Aaron Hughes 17725 1979-11-08 00:00:00 182.88 154
... ... ... ... ... ... ... ...
11055 11071 26357 Zoumana Camara 2488 1979-04-03 00:00:00 182.88 168
11056 11072 111182 Zsolt Laczko 164680 1986-12-18 00:00:00 182.88 176
11057 11073 36491 Zsolt Low 111191 1979-04-29 00:00:00 180.34 154
11058 11074 35506 Zurab Khizanishvili 47058 1981-10-06 00:00:00 185.42 172
11059 11075 39902 Zvjezdan Misimovic 102359 1982-06-05 00:00:00 180.34 176

11060 rows × 7 columns

'player_attributes'

id player_fifa_api_id player_api_id date overall_rating potential preferred_foot attacking_work_rate defensive_work_rate crossing ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 1 218353 505942 2016-02-18 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 2 218353 505942 2015-11-19 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 3 218353 505942 2015-09-21 00:00:00 62.0 66.0 right medium medium 49.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0
3 4 218353 505942 2015-03-20 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
4 5 218353 505942 2007-02-22 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
183973 183974 102359 39902 2009-08-30 00:00:00 83.0 85.0 right medium low 84.0 ... 88.0 83.0 22.0 31.0 30.0 9.0 20.0 84.0 20.0 20.0
183974 183975 102359 39902 2009-02-22 00:00:00 78.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183975 183976 102359 39902 2008-08-30 00:00:00 77.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183976 183977 102359 39902 2007-08-30 00:00:00 78.0 81.0 right medium low 74.0 ... 88.0 53.0 28.0 32.0 30.0 9.0 20.0 73.0 20.0 20.0
183977 183978 102359 39902 2007-02-22 00:00:00 80.0 81.0 right medium low 74.0 ... 88.0 53.0 38.0 32.0 30.0 9.0 9.0 78.0 7.0 15.0

183978 rows × 42 columns

'teams'

id team_api_id team_fifa_api_id team_long_name team_short_name
0 1 9987 673.0 KRC Genk GEN
1 2 9993 675.0 Beerschot AC BAC
2 3 10000 15005.0 SV Zulte-Waregem ZUL
3 4 9994 2007.0 Sporting Lokeren LOK
4 5 9984 1750.0 KSV Cercle Brugge CEB
... ... ... ... ... ...
294 49479 10190 898.0 FC St. Gallen GAL
295 49837 10191 1715.0 FC Thun THU
296 50201 9777 324.0 Servette FC SER
297 50204 7730 1862.0 FC Lausanne-Sports LAU
298 51606 7896 NaN Lugano LUG

299 rows × 5 columns

'team_attributes'

id team_fifa_api_id team_api_id date buildUpPlaySpeed buildUpPlaySpeedClass buildUpPlayDribbling buildUpPlayDribblingClass buildUpPlayPassing buildUpPlayPassingClass ... chanceCreationShooting chanceCreationShootingClass chanceCreationPositioningClass defencePressure defencePressureClass defenceAggression defenceAggressionClass defenceTeamWidth defenceTeamWidthClass defenceDefenderLineClass
0 1 434 9930 2010-02-22 00:00:00 60 Balanced NaN Little 50 Mixed ... 55 Normal Organised 50 Medium 55 Press 45 Normal Cover
1 2 434 9930 2014-09-19 00:00:00 52 Balanced 48.0 Normal 56 Mixed ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover
2 3 434 9930 2015-09-10 00:00:00 47 Balanced 41.0 Normal 54 Mixed ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover
3 4 77 8485 2010-02-22 00:00:00 70 Fast NaN Little 70 Long ... 70 Lots Organised 60 Medium 70 Double 70 Wide Cover
4 5 77 8485 2011-02-22 00:00:00 47 Balanced NaN Little 52 Mixed ... 52 Normal Organised 47 Medium 47 Press 52 Normal Cover
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1453 1454 15005 10000 2011-02-22 00:00:00 52 Balanced NaN Little 52 Mixed ... 53 Normal Organised 46 Medium 48 Press 53 Normal Cover
1454 1455 15005 10000 2012-02-22 00:00:00 54 Balanced NaN Little 51 Mixed ... 50 Normal Organised 44 Medium 55 Press 53 Normal Cover
1455 1456 15005 10000 2013-09-20 00:00:00 54 Balanced NaN Little 51 Mixed ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover
1456 1457 15005 10000 2014-09-19 00:00:00 54 Balanced 42.0 Normal 51 Mixed ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover
1457 1458 15005 10000 2015-09-10 00:00:00 54 Balanced 42.0 Normal 51 Mixed ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover

1458 rows × 25 columns

'sqlite_sequences'

name seq
0 Team 103916
1 Country 51958
2 League 51958
3 Match 51958
4 Player 11075
5 Player_Attributes 183978
6 Team_Attributes 1458

Data Cleaning

In [12]:
dfs_with_nulls = db.describe_and_check_nulls()
================================================== countries ==================================================
countries INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11 entries, 0 to 10
Data columns (total 2 columns):
id      11 non-null int64
name    11 non-null object
dtypes: int64(1), object(1)
memory usage: 304.0+ bytes
None
countries Describtion:
count mean std min 25% 50% 75% max
id 11.0 12452.090909 8215.308472 1.0 6289.0 13274.0 18668.0 24558.0
countries Correlations:
Hover to magify
id
id 1
countries NULLs:
id      0
name    0
dtype: int64





================================================== leagues ==================================================
leagues INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11 entries, 0 to 10
Data columns (total 3 columns):
id            11 non-null int64
country_id    11 non-null int64
name          11 non-null object
dtypes: int64(2), object(1)
memory usage: 392.0+ bytes
None
leagues Describtion:
count mean std min 25% 50% 75% max
id 11.0 12452.090909 8215.308472 1.0 6289.0 13274.0 18668.0 24558.0
country_id 11.0 12452.090909 8215.308472 1.0 6289.0 13274.0 18668.0 24558.0
leagues Correlations:
Hover to magify
id country_id
id 1 1
country_id 1 1
leagues NULLs:
id            0
country_id    0
name          0
dtype: int64





================================================== matches ==================================================
matches INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25979 entries, 0 to 25978
Columns: 115 entries, id to BSA
dtypes: float64(96), int64(9), object(10)
memory usage: 22.8+ MB
None
matches Describtion:
count mean std min 25% 50% 75% max
id 25979.0 1.299000e+04 7499.635658 1.00 6495.50 12990.0 19484.50 25979.0
country_id 25979.0 1.173863e+04 7553.936759 1.00 4769.00 10257.0 17642.00 24558.0
league_id 25979.0 1.173863e+04 7553.936759 1.00 4769.00 10257.0 17642.00 24558.0
stage 25979.0 1.824277e+01 10.407354 1.00 9.00 18.0 27.00 38.0
match_api_id 25979.0 1.195429e+06 494627.856527 483129.00 768436.50 1147511.0 1709852.50 2216672.0
... ... ... ... ... ... ... ... ...
GBD 14162.0 3.648189e+00 0.867440 1.45 3.20 3.3 3.75 11.0
GBA 14162.0 4.353097e+00 3.010189 1.12 2.50 3.4 5.00 34.0
BSH 14161.0 2.497894e+00 1.507793 1.04 1.67 2.1 2.62 17.0
BSD 14161.0 3.660742e+00 0.868272 1.33 3.25 3.4 3.75 13.0
BSA 14161.0 4.405663e+00 3.189814 1.12 2.50 3.4 5.00 34.0

105 rows × 8 columns

matches Correlations:
Hover to magify
id country_id league_id stage match_api_id home_team_api_id away_team_api_id home_team_goal away_team_goal home_player_X1 home_player_X2 home_player_X3 home_player_X4 home_player_X5 home_player_X6 home_player_X7 home_player_X8 home_player_X9 home_player_X10 home_player_X11 away_player_X1 away_player_X2 away_player_X3 away_player_X4 away_player_X5 away_player_X6 away_player_X7 away_player_X8 away_player_X9 away_player_X10 away_player_X11 home_player_Y1 home_player_Y2 home_player_Y3 home_player_Y4 home_player_Y5 home_player_Y6 home_player_Y7 home_player_Y8 home_player_Y9 home_player_Y10 home_player_Y11 away_player_Y1 away_player_Y2 away_player_Y3 away_player_Y4 away_player_Y5 away_player_Y6 away_player_Y7 away_player_Y8 away_player_Y9 away_player_Y10 away_player_Y11 home_player_1 home_player_2 home_player_3 home_player_4 home_player_5 home_player_6 home_player_7 home_player_8 home_player_9 home_player_10 home_player_11 away_player_1 away_player_2 away_player_3 away_player_4 away_player_5 away_player_6 away_player_7 away_player_8 away_player_9 away_player_10 away_player_11 B365H B365D B365A BWH BWD BWA IWH IWD IWA LBH LBD LBA PSH PSD PSA WHH WHD WHA SJH SJD SJA VCH VCD VCA GBH GBD GBA BSH BSD BSA
id 1 0.99 0.99 0.004 0.13 -0.016 -0.016 0.0086 0.011 -0.0034 0.0066 0.027 -0.017 0.046 -0.025 0.082 -0.06 -0.054 0.055 -0.023 0.0061 0.0055 0.015 -0.02 0.045 -0.014 0.086 -0.055 -0.056 0.038 -0.014 -0.0032 -0.0034 -0.0034 -0.01 -0.049 0.069 -0.014 0.1 0.033 -0.054 0.018 0.0071 nan 0.0048 0.002 -0.044 0.06 -0.017 0.096 0.035 -0.037 0.0076 0.11 0.14 0.16 0.17 0.11 0.15 0.15 0.13 0.12 0.14 0.11 0.1 0.15 0.16 0.16 0.11 0.14 0.14 0.12 0.12 0.14 0.11 0.064 0.1 0.036 0.061 0.11 0.041 0.063 0.096 0.041 0.07 0.12 0.045 0.079 0.12 0.052 0.066 0.11 0.044 0.056 0.098 0.033 0.075 0.12 0.056 0.051 0.095 0.025 0.049 0.096 0.024
country_id 0.99 1 1 -0.0022 0.039 -0.021 -0.021 0.0081 0.0089 -0.007 -0.0021 0.019 -0.018 0.054 -0.05 0.057 -0.048 -0.027 0.038 -0.016 0.0063 -0.0025 0.0067 -0.021 0.054 -0.04 0.063 -0.045 -0.029 0.024 -0.0098 -0.0066 -0.007 -0.0031 -0.01 -0.056 0.076 -0.0058 0.08 0.0091 -0.041 -5.8e-05 0.0072 nan 0.0051 0.002 -0.053 0.068 -0.0097 0.074 0.01 -0.026 -0.0086 0.073 0.1 0.13 0.13 0.073 0.11 0.11 0.091 0.076 0.1 0.074 0.07 0.1 0.13 0.13 0.068 0.11 0.11 0.085 0.076 0.1 0.077 0.06 0.093 0.034 0.057 0.096 0.038 0.058 0.082 0.039 0.064 0.1 0.038 0.079 0.12 0.049 0.06 0.1 0.039 0.054 0.09 0.032 0.069 0.11 0.05 0.05 0.088 0.023 0.048 0.089 0.022
league_id 0.99 1 1 -0.0022 0.039 -0.021 -0.021 0.0081 0.0089 -0.007 -0.0021 0.019 -0.018 0.054 -0.05 0.057 -0.048 -0.027 0.038 -0.016 0.0063 -0.0025 0.0067 -0.021 0.054 -0.04 0.063 -0.045 -0.029 0.024 -0.0098 -0.0066 -0.007 -0.0031 -0.01 -0.056 0.076 -0.0058 0.08 0.0091 -0.041 -5.8e-05 0.0072 nan 0.0051 0.002 -0.053 0.068 -0.0097 0.074 0.01 -0.026 -0.0086 0.073 0.1 0.13 0.13 0.073 0.11 0.11 0.091 0.076 0.1 0.074 0.07 0.1 0.13 0.13 0.068 0.11 0.11 0.085 0.076 0.1 0.077 0.06 0.093 0.034 0.057 0.096 0.038 0.058 0.082 0.039 0.064 0.1 0.038 0.079 0.12 0.049 0.06 0.1 0.039 0.054 0.09 0.032 0.069 0.11 0.05 0.05 0.088 0.023 0.048 0.089 0.022
stage 0.004 -0.0022 -0.0022 1 0.014 -0.0066 -0.0038 0.015 0.005 0.03 0.02 0.0014 -0.016 -0.0087 -0.016 -0.0056 0.0018 0.028 -0.0083 -0.0076 0.0057 0.018 0.0085 -0.0074 -0.023 -0.013 -0.0085 0.0077 0.034 -0.015 -0.003 0.025 0.034 -0.00034 0.00034 0.019 0.015 0.0015 -0.0021 -0.03 0.0016 -0.00021 0.0037 nan 0.0058 0.0067 0.028 0.0096 0.003 -0.0096 -0.028 0.0056 -0.0037 -0.0045 0.0076 0.016 -0.0068 0.0084 0.013 -0.0034 0.0096 -2.1e-05 0.015 -0.0039 0.0026 0.012 0.012 0.0017 0.011 0.013 0.0064 0.017 0.0048 0.011 0.0049 0.0072 0.031 0.0098 0.007 0.04 0.012 0.012 0.05 0.018 0.0073 0.038 0.014 0.0092 0.031 0.0038 0.013 0.032 0.016 0.005 0.031 0.012 0.0097 0.036 0.017 0.0059 0.033 0.012 0.0095 0.034 0.013
match_api_id 0.13 0.039 0.039 0.014 1 0.091 0.091 0.004 0.026 0.03 0.091 0.089 -0.0071 -0.067 0.21 0.21 -0.097 -0.25 0.17 -0.05 -0.0031 0.089 0.087 -0.0047 -0.074 0.23 0.2 -0.083 -0.25 0.13 -0.028 0.027 0.031 -0.0026 -0.0019 0.059 -0.016 -0.03 0.22 0.23 -0.12 0.16 -0.0037 nan -0.0025 -0.0008 0.065 -0.028 -0.019 0.21 0.24 -0.094 0.14 0.39 0.49 0.41 0.42 0.46 0.47 0.44 0.48 0.49 0.47 0.44 0.39 0.49 0.41 0.43 0.46 0.47 0.44 0.48 0.49 0.47 0.45 0.046 0.11 0.0084 0.051 0.099 0.014 0.057 0.12 0.012 0.072 0.15 0.054 0.027 0.028 0.014 0.063 0.076 0.029 0.029 0.088 -0.0076 0.068 0.15 0.045 0.025 0.11 0.016 0.027 0.11 0.013
home_team_api_id -0.016 -0.021 -0.021 -0.0066 0.091 1 0.0057 -0.016 0.016 0.0013 0.012 0.027 0.00012 -0.0073 0.0052 0.016 -0.0011 -0.026 0.017 0.0028 -0.00034 -0.00056 0.0057 -0.011 -0.0028 0.021 0.024 -0.00011 -0.029 0.003 0.0088 0.00097 0.0016 -0.0008 -0.0011 -0.00091 0.014 0.0013 0.0062 0.029 -0.0072 0.0098 -0.0006 nan -0.00018 -0.00023 0.0037 -0.0029 -0.0084 0.011 0.032 0.0041 -0.0063 0.043 0.1 0.066 0.082 0.055 0.079 0.069 0.07 0.095 0.077 0.076 0.048 0.062 0.049 0.069 0.058 0.055 0.054 0.045 0.052 0.063 0.06 0.045 -0.022 -0.036 0.046 -0.02 -0.036 0.041 -0.018 -0.038 0.048 -0.022 -0.034 0.052 -0.031 -0.044 0.041 -0.021 -0.035 0.024 -0.015 -0.02 0.047 -0.019 -0.033 0.018 -0.0087 -0.011 0.018 -0.0067 -0.011
away_team_api_id -0.016 -0.021 -0.021 -0.0038 0.091 0.0057 1 0.0069 -0.014 0.00099 0.00061 0.022 0.0043 -0.0083 0.01 0.012 0.0074 -0.025 0.0046 0.012 -0.0028 0.013 0.018 -0.0031 -0.012 0.0093 0.011 0.012 -0.016 -0.012 0.02 0.00085 0.0011 -0.00078 -0.0009 0.0078 0.01 0.0064 0.0029 0.025 0.0015 -0.0043 -0.002 nan -0.0027 -0.0025 0.0065 0.012 0.0086 0.0041 0.027 0.016 -0.014 0.051 0.077 0.053 0.078 0.053 0.058 0.063 0.065 0.058 0.07 0.054 0.047 0.095 0.072 0.083 0.059 0.067 0.078 0.067 0.087 0.083 0.09 -0.032 0.018 0.039 -0.033 0.018 0.041 -0.033 0.023 0.036 -0.031 0.016 0.046 -0.04 0.013 0.051 -0.032 0.019 0.033 -0.017 0.0075 0.016 -0.03 0.019 0.037 -0.012 0.0087 0.026 -0.012 0.011 0.021
home_team_goal 0.0086 0.0081 0.0081 0.015 0.004 -0.016 0.0069 1 -0.064 0.0022 0.0067 -0.0053 -0.0066 0.014 -0.0056 0.028 0.019 -0.035 -0.029 0.05 -0.0065 -0.018 -0.014 -0.016 0.0073 0.021 -0.0047 -0.016 -0.00066 0.015 -0.011 0.0013 0.0031 -0.0027 0.00051 -0.0075 0.023 0.00088 -0.00046 0.049 0.043 -0.037 -0.0019 nan -0.0077 -0.0081 -0.0095 -0.019 0.0012 0.017 -0.0044 -0.014 0.013 -0.016 -0.027 -0.0039 -0.011 -0.025 -0.01 -0.0065 -0.017 -0.013 -0.034 -0.034 0.035 0.028 0.027 0.017 0.023 0.016 0.025 0.011 0.013 0.026 0.024 -0.26 0.27 0.36 -0.26 0.27 0.35 -0.27 0.27 0.36 -0.26 0.26 0.35 -0.25 0.27 0.35 -0.26 0.27 0.35 -0.25 0.27 0.35 -0.25 0.27 0.34 -0.26 0.27 0.35 -0.25 0.27 0.35
away_team_goal 0.011 0.0089 0.0089 0.005 0.026 0.016 -0.014 -0.064 1 -0.013 -0.022 -0.0075 -0.0069 0.01 0.0095 -0.01 -0.011 0.0039 0.012 -0.014 0.015 0.018 -0.0018 -0.009 0.01 -0.0028 0.028 0.023 -0.034 -0.037 0.049 -0.011 -0.015 -0.0066 -0.0047 -0.0083 -0.007 0.0091 0.011 -0.0087 -0.014 0.012 0.0081 nan 0.016 0.016 -0.0057 0.023 0.0019 -0.0062 0.045 0.048 -0.04 0.028 0.029 0.028 0.025 0.036 0.037 0.018 0.022 0.025 0.026 0.031 -0.013 -0.0067 -0.007 -0.0065 -0.011 0.0064 0.0047 -0.00041 -0.0039 -0.022 -0.0074 0.3 -0.074 -0.23 0.3 -0.072 -0.23 0.3 -0.083 -0.23 0.29 -0.072 -0.23 0.3 -0.074 -0.23 0.29 -0.072 -0.22 0.29 -0.076 -0.22 0.29 -0.07 -0.22 0.3 -0.069 -0.23 0.3 -0.073 -0.22
home_player_X1 -0.0034 -0.007 -0.007 0.03 0.03 0.0013 0.00099 0.0022 -0.013 1 0.12 0.032 0.028 -0.018 0.0095 0.013 -0.0088 -0.0027 0.0069 -0.041 0.19 0.031 0.032 0.028 -0.018 0.009 0.013 -0.0049 0.00063 -0.002 nan 0.97 0.96 -4.1e-05 -9.3e-05 0.026 0.0045 0.0036 0.03 0.011 0.0047 -0.12 0.58 nan -4.1e-05 -5.6e-05 0.019 -0.004 -0.0075 0.0084 -0.00013 0.011 nan 0.0075 0.01 0.0089 0.0092 0.0087 0.009 0.0087 0.012 0.0086 0.0048 0.01 0.0099 0.0075 0.009 0.0085 0.012 0.011 0.0084 0.011 0.015 0.013 0.0077 -0.0039 0.0057 0.0057 -0.0031 0.0046 0.0065 -0.0031 0.0054 0.0071 -0.0023 0.0065 0.0069 -0.0047 -0.0022 0.0015 -0.0027 0.0033 0.0075 -0.0085 0.0035 0.0068 -0.0013 0.0059 0.0073 -0.0056 0.0038 0.0084 -0.0064 0.0049 0.0088
home_player_X2 0.0066 -0.0021 -0.0021 0.02 0.091 0.012 0.00061 0.0067 -0.022 0.12 1 0.54 0.17 -0.68 -0.048 0.15 0.19 0.034 -0.098 0.023 0.0048 0.13 0.096 0.0091 -0.14 0.039 0.02 0.06 -0.0058 -0.036 0.009 0.11 0.11 0.032 0.027 0.61 0.24 0.091 -0.047 0.037 0.092 -0.034 0.017 nan -0.0012 -0.0017 0.13 0.0093 0.033 -0.052 0.012 0.02 -0.011 0.041 0.0099 0.0095 0.044 0.049 0.015 0.015 0.054 0.029 0.034 0.019 0.036 0.03 0.029 0.025 0.03 0.028 0.024 0.028 0.025 0.036 0.03 -0.021 0.0046 0.019 -0.02 0.0078 0.025 -0.019 0.013 0.02 -0.019 0.012 0.027 -0.026 0.011 0.032 -0.018 -0.0013 0.022 -0.02 -0.024 -0.00043 -0.016 0.0095 0.027 -0.019 -0.0099 0.01 -0.019 -0.012 0.0076
home_player_X3 0.027 0.019 0.019 0.0014 0.089 0.027 0.022 -0.0053 -0.0075 0.032 0.54 1 0.11 -0.51 -0.056 0.14 0.13 -0.047 -0.039 0.0063 0.005 0.08 0.12 -0.01 -0.083 0.034 0.0056 0.034 -0.02 -0.014 0.01 0.032 nan -0.001 0.057 0.4 0.2 0.059 -0.02 0.081 0.041 0.023 0.017 nan -0.001 -0.0014 0.071 0.0092 0.033 -0.024 0.02 0.0088 -0.0027 0.034 0.024 0.02 0.053 0.052 0.036 0.028 0.053 0.04 0.044 0.022 0.042 0.043 0.028 0.023 0.04 0.039 0.039 0.03 0.047 0.031 0.035 -0.012 -0.009 0.002 -0.012 -0.0092 0.0063 -0.0097 -0.0012 0.0022 -0.01 -0.0021 0.012 -0.014 -0.016 0.01 -0.011 -0.012 0.0049 -0.013 -0.025 -0.0072 -0.0097 -0.0074 0.0052 -0.014 -0.012 0.00092 -0.015 -0.014 -0.00077
home_player_X4 -0.017 -0.018 -0.018 -0.016 -0.0071 0.00012 0.0043 -0.0066 -0.0069 0.028 0.17 0.11 1 -0.57 -0.11 0.1 0.17 0.056 -0.076 0.052 0.0046 0.0045 -0.021 0.13 -0.11 -0.016 -0.005 0.068 0.026 -0.034 0.024 0.028 nan -0.00071 -0.027 0.52 0.18 0.046 -0.046 0.022 0.084 -0.037 0.015 nan -0.00071 -0.00095 0.12 0.0065 0.005 -0.045 -0.0033 0.042 -0.028 0.00051 -0.016 -0.05 -0.026 -0.013 -0.022 -0.049 -0.0032 -0.027 -0.026 -0.024 -0.01 -0.031 -0.021 -0.015 -0.022 -0.016 -0.028 -0.021 -0.032 -0.041 -0.023 -0.016 -0.028 -0.0065 -0.017 -0.024 -0.0018 -0.013 -0.02 -0.0064 -0.016 -0.025 -0.0049 -0.018 -0.026 0.0041 -0.016 -0.028 -0.0021 -0.016 -0.025 -0.0039 -0.016 -0.029 -0.0034 -0.014 -0.02 -0.0013 -0.014 -0.022 -0.0042
home_player_X5 0.046 0.054 0.054 -0.0087 -0.067 -0.0073 -0.0083 0.014 0.01 -0.018 -0.68 -0.51 -0.57 1 -0.092 -0.13 -0.28 -0.13 0.16 -0.051 -0.0014 -0.13 -0.082 -0.098 0.23 -0.031 -0.0081 -0.12 -0.02 0.061 -0.03 -0.018 nan -0.022 -0.028 -0.94 -0.13 -0.14 0.096 0.018 -0.14 0.071 -0.0084 nan 0.0018 0.0024 -0.23 -0.0049 -0.036 0.095 -0.0047 -0.056 0.035 -0.024 0.01 0.036 -0.0037 -0.02 -0.00019 0.024 -0.028 -0.0014 -0.0051 0.0082 -0.019 0.0098 0.0088 0.0063 -0.0031 -0.004 0.0087 0.0033 0.0063 0.014 -0.0068 0.00076 0.028 0.011 -0.0027 0.021 0.0027 -0.0025 0.013 0.01 -0.002 0.019 0.0055 0.0035 0.025 -0.0093 -0.0033 0.029 0.0057 0.00054 0.042 0.019 -0.0032 0.023 0.0032 -0.00022 0.029 0.012 0.00082 0.031 0.016
home_player_X6 -0.025 -0.05 -0.05 -0.016 0.21 0.0052 0.01 -0.0056 0.0095 0.0095 -0.048 -0.056 -0.11 -0.092 1 0.27 -0.41 -0.41 0.26 -0.19 0.0017 0.033 0.034 -0.016 -0.036 0.36 0.23 -0.21 -0.21 0.12 -0.092 0.0095 nan 0.015 0.038 0.066 -0.78 -0.26 0.38 0.28 -0.23 0.38 0.0074 nan -0.00097 0.001 0.028 -0.28 -0.21 0.2 0.17 -0.1 0.2 0.094 0.11 0.093 0.096 0.093 0.061 0.12 0.13 0.082 0.13 0.085 0.092 0.097 0.094 0.079 0.089 0.082 0.089 0.1 0.094 0.093 0.081 0.018 0.013 -0.0066 0.027 0.025 -0.00053 0.024 0.029 -2.4e-05 0.022 0.023 -7.2e-05 0.038 0.008 -0.00014 0.025 0.012 0.003 -7.8e-05 0.0069 -0.0039 0.028 0.032 0.0033 0.0017 0.0044 -0.0024 -0.0042 -0.00098 -0.014
home_player_X7 0.082 0.057 0.057 -0.0056 0.21 0.016 0.012 0.028 -0.01 0.013 0.15 0.14 0.1 -0.13 0.27 1 -0.42 -0.45 0.19 -0.12 0.0052 0.032 0.035 0.0014 -0.029 0.23 0.22 -0.14 -0.19 0.086 -0.053 0.013 nan 0.019 0.0057 0.16 -0.13 -0.68 0.4 0.33 -0.19 0.22 0.013 nan 0.0014 0.0045 0.027 -0.16 -0.17 0.15 0.15 -0.073 0.13 0.099 0.11 0.089 0.1 0.096 0.07 0.073 0.14 0.08 0.13 0.066 0.096 0.097 0.083 0.08 0.084 0.088 0.091 0.092 0.095 0.094 0.074 -0.03 0.029 0.024 -0.027 0.035 0.033 -0.025 0.044 0.033 -0.029 0.037 0.031 -0.038 0.0052 0.024 -0.028 0.024 0.032 -0.033 0.04 0.032 -0.023 0.043 0.033 -0.029 0.049 0.041 -0.034 0.043 0.032
home_player_X8 -0.06 -0.048 -0.048 0.0018 -0.097 -0.0011 0.0074 0.019 -0.011 -0.0088 0.19 0.13 0.17 -0.28 -0.41 -0.42 1 -0.058 -0.61 0.69 0.0028 0.048 0.018 0.052 -0.099 -0.21 -0.15 0.32 0.05 -0.19 0.22 -0.0088 nan -0.013 -0.0043 0.3 0.51 0.6 -0.75 0.28 0.68 -0.61 -0.0064 nan 0.0064 0.0018 0.1 0.22 0.21 -0.28 0.023 0.21 -0.25 -0.026 -0.032 -0.043 -0.033 -0.012 0.011 -0.046 -0.068 0.0051 -0.081 0.029 -0.022 -0.031 -0.021 -0.022 -0.022 -0.021 -0.029 -0.038 -0.024 -0.033 0.014 -0.027 0.035 0.057 -0.032 0.026 0.055 -0.031 0.023 0.053 -0.03 0.025 0.052 -0.022 0.043 0.041 -0.034 0.043 0.049 -0.019 0.021 0.049 -0.032 0.027 0.056 -0.025 0.018 0.051 -0.021 0.026 0.057
home_player_X9 -0.054 -0.027 -0.027 0.028 -0.25 -0.026 -0.025 -0.035 0.0039 -0.0027 0.034 -0.047 0.056 -0.13 -0.41 -0.45 -0.058 1 -0.33 -0.3 -0.015 -0.0034 -0.019 0.023 -0.013 -0.22 -0.19 0.051 0.32 -0.096 -0.069 -0.0027 nan 0.0071 -0.0031 0.11 0.14 0.17 -0.11 -0.9 0.11 -0.15 -0.0084 nan -0.016 -0.015 0.016 0.11 0.096 -0.11 -0.3 0.038 -0.072 -0.13 -0.17 -0.15 -0.15 -0.16 -0.13 -0.16 -0.16 -0.16 -0.16 -0.19 -0.14 -0.17 -0.16 -0.13 -0.14 -0.14 -0.15 -0.15 -0.16 -0.16 -0.16 0.027 -0.1 -0.084 0.024 -0.1 -0.087 0.023 -0.1 -0.092 0.025 -0.11 -0.089 0.028 -0.11 -0.081 0.029 -0.1 -0.088 0.029 -0.09 -0.081 0.019 -0.12 -0.095 0.031 -0.075 -0.076 0.036 -0.076 -0.07
home_player_X10 0.055 0.038 0.038 -0.0083 0.17 0.017 0.0046 -0.029 0.012 0.0069 -0.098 -0.039 -0.076 0.16 0.26 0.19 -0.61 -0.33 1 -0.63 -0.013 -0.029 -0.01 -0.029 0.054 0.14 0.11 -0.21 -0.12 0.22 -0.15 0.0069 nan -0.006 -0.0095 -0.16 -0.26 -0.29 0.57 0.076 -0.9 0.77 -0.0054 nan -0.015 -0.01 -0.056 -0.12 -0.13 0.21 0.056 -0.21 0.22 0.053 0.071 0.069 0.062 0.06 0.03 0.08 0.098 0.048 0.12 0.035 0.055 0.076 0.059 0.053 0.058 0.06 0.068 0.066 0.06 0.065 0.034 0.04 -0.0032 -0.035 0.046 0.0029 -0.034 0.046 0.0047 -0.031 0.045 0.0098 -0.026 0.03 0.0057 -0.014 0.047 -0.012 -0.026 0.041 -0.0092 -0.035 0.046 0.012 -0.027 0.041 -0.019 -0.045 0.037 -0.023 -0.049
home_player_X11 -0.023 -0.016 -0.016 -0.0076 -0.05 0.0028 0.012 0.05 -0.014 -0.041 0.023 0.0063 0.052 -0.051 -0.19 -0.12 0.69 -0.3 -0.63 1 -0.03 -0.012 -0.0088 0.017 -0.019 -0.089 -0.059 0.22 -0.066 -0.14 0.24 -0.041 nan 0.0018 0.0041 0.059 0.35 0.39 -0.49 0.54 0.77 -0.77 -0.056 nan -0.015 -0.016 0.021 0.13 0.13 -0.16 0.13 0.18 -0.21 0.0054 0.025 0.023 0.017 0.034 0.051 0.016 -0.019 0.049 -0.043 0.097 0.024 0.023 0.036 0.029 0.028 0.029 0.026 0.023 0.039 0.03 0.067 -0.051 0.091 0.1 -0.054 0.082 0.1 -0.054 0.074 0.1 -0.053 0.077 0.096 -0.037 0.088 0.078 -0.059 0.1 0.095 -0.049 0.086 0.1 -0.052 0.088 0.1 -0.057 0.078 0.1 -0.055 0.086 0.11
away_player_X1 0.0061 0.0063 0.0063 0.0057 -0.0031 -0.00034 -0.0028 -0.0065 0.015 0.19 0.0048 0.005 0.0046 -0.0014 0.0017 0.0052 0.0028 -0.015 -0.013 -0.03 1 0.1 -0.0045 -0.0038 -0.0081 0.0035 0.002 0.0051 0.0032 -0.0028 nan 0.19 nan -5.6e-05 -0.00012 0.0031 0.0045 0.0027 0.0049 -0.036 -0.033 -0.14 0.78 nan 0.96 0.86 0.031 0.027 0.036 0.033 -0.00018 0.015 nan 0.0059 -0.0043 0.013 -0.003 -0.0063 -0.00093 0.0049 0.0095 -0.0064 -0.0052 0.0036 0.0088 0.0015 0.0044 0.0027 0.0017 -0.0032 -0.00099 0.0012 0.0044 -0.00076 0.0098 -0.0021 -0.0046 -0.003 -0.0018 -0.0047 -0.0029 -0.0022 -0.005 -0.0031 -0.0012 -0.0062 -0.0039 -0.0047 -0.0022 0.0015 -0.0014 -0.0053 -0.0033 -0.002 -0.0058 -0.0035 -0.0017 -0.004 -0.0028 -0.0021 -0.006 -0.004 -0.002 -0.0061 -0.0041
away_player_X2 0.0055 -0.0025 -0.0025 0.018 0.089 -0.00056 0.013 -0.018 0.018 0.031 0.13 0.08 0.0045 -0.13 0.033 0.032 0.048 -0.0034 -0.029 -0.012 0.1 1 0.56 0.16 -0.67 -0.072 0.17 0.18 0.042 -0.1 0.018 0.031 nan -0.0012 0.012 0.12 0.017 0.028 -0.046 -0.002 0.011 -0.02 0.09 nan 0.094 0.098 0.6 0.27 0.086 -0.039 0.028 0.089 -0.024 0.033 0.014 0.016 0.028 0.019 0.031 0.019 0.021 0.033 0.022 0.025 0.039 0.021 1.6e-05 0.034 0.038 0.03 0.0033 0.043 0.035 0.028 0.019 0.026 -0.02 -0.026 0.026 -0.018 -0.021 0.028 -0.014 -0.024 0.031 -0.014 -0.023 0.037 -0.029 -0.033 0.031 -0.025 -0.026 0.0051 -0.036 -0.022 0.03 -0.02 -0.022 0.004 -0.031 -0.017 0.0032 -0.031 -0.017
away_player_X3 0.015 0.0067 0.0067 0.0085 0.087 0.0057 0.018 -0.014 -0.0018 0.032 0.096 0.12 -0.021 -0.082 0.034 0.035 0.018 -0.019 -0.01 -0.0088 -0.0045 0.56 1 0.18 -0.52 -0.089 0.14 0.15 -0.041 -0.052 0.013 0.032 nan -0.00097 0.042 0.068 0.0047 0.016 -0.0074 0.015 0.0043 -0.004 0.027 nan -0.018 0.014 0.41 0.22 0.057 -0.019 0.086 0.055 0.023 0.041 0.035 0.028 0.036 0.041 0.046 0.032 0.038 0.028 0.037 0.032 0.043 0.026 0.0089 0.049 0.047 0.038 0.023 0.053 0.041 0.035 0.024 0.013 -0.024 -0.025 0.014 -0.024 -0.022 0.014 -0.019 -0.023 0.016 -0.021 -0.022 0.014 -0.034 -0.027 0.015 -0.03 -0.026 0.0019 -0.03 -0.021 0.016 -0.023 -0.02 0.0038 -0.032 -0.024 0.0034 -0.029 -0.023
away_player_X4 -0.02 -0.021 -0.021 -0.0074 -0.0047 -0.011 -0.0031 -0.016 -0.009 0.028 0.0091 -0.01 0.13 -0.098 -0.016 0.0014 0.052 0.023 -0.029 0.017 -0.0038 0.16 0.18 1 -0.57 -0.13 0.11 0.18 0.069 -0.092 0.046 0.028 nan -0.00075 -0.04 0.1 0.0024 -0.013 -0.038 -0.0054 0.03 -0.031 0.024 nan -0.015 -0.02 0.53 0.22 0.048 -0.027 0.021 0.1 -0.04 -0.0004 -0.03 -0.033 -0.023 -0.02 -0.033 -0.026 -0.016 -0.017 -0.031 -0.033 -0.0099 -0.035 -0.047 -0.021 -0.0057 -0.017 -0.037 -0.004 -0.017 -0.028 -0.015 0.001 -0.044 -0.03 0.0046 -0.043 -0.031 0.0052 -0.036 -0.026 0.00015 -0.045 -0.034 0.0029 -0.049 -0.031 0.003 -0.046 -0.03 0.0041 -0.032 -0.018 0.0032 -0.048 -0.034 0.0047 -0.031 -0.019 0.0037 -0.03 -0.02
away_player_X5 0.045 0.054 0.054 -0.023 -0.074 -0.0028 -0.012 0.0073 0.01 -0.018 -0.14 -0.083 -0.11 0.23 -0.036 -0.029 -0.099 -0.013 0.054 -0.019 -0.0081 -0.67 -0.52 -0.57 1 -0.091 -0.13 -0.29 -0.14 0.16 -0.042 -0.018 nan 0.0019 0.00065 -0.23 -0.0059 -0.021 0.079 -0.0054 -0.048 0.031 -0.019 nan -0.0021 -0.012 -0.94 -0.13 -0.14 0.095 0.028 -0.14 0.067 -0.021 0.016 0.022 0.0031 0.0039 0.005 0.013 -0.00019 0.0008 0.0085 0.0053 -0.026 0.0091 0.035 -0.006 -0.012 -0.012 0.021 -0.026 -0.012 -0.0017 -0.0052 0.012 0.018 -0.0066 0.0096 0.011 -0.0098 0.011 0.0026 -0.0084 0.01 0.011 -0.0071 0.004 0.03 -0.0033 0.0079 0.021 -0.0071 0.021 0.024 -0.009 0.0064 0.018 -0.0071 0.02 0.013 -0.015 0.02 0.014 -0.011
away_player_X6 -0.014 -0.04 -0.04 -0.013 0.23 0.021 0.0093 0.021 -0.0028 0.009 0.039 0.034 -0.016 -0.031 0.36 0.23 -0.21 -0.22 0.14 -0.089 0.0035 -0.072 -0.089 -0.13 -0.091 1 0.23 -0.39 -0.39 0.22 -0.18 0.009 nan 0.009 0.014 0.029 -0.27 -0.2 0.2 0.18 -0.11 0.19 0.013 nan -0.00098 0.0054 0.058 -0.8 -0.24 0.38 0.26 -0.2 0.36 0.09 0.093 0.084 0.087 0.088 0.082 0.089 0.11 0.093 0.097 0.078 0.1 0.11 0.097 0.093 0.1 0.063 0.13 0.12 0.094 0.13 0.087 -0.021 0.039 0.032 -0.016 0.053 0.041 -0.016 0.055 0.038 -0.017 0.051 0.04 -0.049 0.05 0.075 -0.015 0.039 0.041 -0.018 0.029 0.022 -0.013 0.06 0.047 -0.0083 0.027 0.018 -0.011 0.022 0.00056
away_player_X7 0.086 0.063 0.063 -0.0085 0.2 0.024 0.011 -0.0047 0.028 0.013 0.02 0.0056 -0.005 -0.0081 0.23 0.22 -0.15 -0.19 0.11 -0.059 0.002 0.17 0.14 0.11 -0.13 0.23 1 -0.39 -0.44 0.1 -0.081 0.013 nan -0.016 -0.0044 0.0064 -0.17 -0.18 0.15 0.15 -0.098 0.13 0.0026 nan 0.0015 -0.00059 0.15 -0.097 -0.7 0.4 0.34 -0.12 0.18 0.089 0.095 0.082 0.087 0.079 0.078 0.092 0.086 0.081 0.096 0.072 0.092 0.1 0.079 0.097 0.089 0.076 0.068 0.13 0.083 0.12 0.073 0.028 -0.011 -0.043 0.034 -0.0056 -0.033 0.037 -0.001 -0.037 0.034 -0.0079 -0.04 0.0078 -0.023 -0.03 0.034 -0.016 -0.038 0.03 0.0018 -0.033 0.034 0.0044 -0.029 0.041 -0.0039 -0.038 0.038 -0.008 -0.054
away_player_X8 -0.055 -0.045 -0.045 0.0077 -0.083 -0.00011 0.012 -0.016 0.023 -0.0049 0.06 0.034 0.068 -0.12 -0.21 -0.14 0.32 0.051 -0.21 0.22 0.0051 0.18 0.15 0.18 -0.29 -0.39 -0.39 1 -0.068 -0.59 0.69 -0.0049 nan -0.0049 -0.0076 0.12 0.22 0.2 -0.27 0.023 0.22 -0.25 0.00026 nan 0.0065 0.0053 0.31 0.51 0.6 -0.75 0.29 0.67 -0.62 -0.013 -0.024 -0.017 -0.027 -0.014 -0.0025 -0.028 -0.024 -0.012 -0.027 0.01 -0.021 -0.023 -0.028 -0.025 -0.017 0.0077 -0.04 -0.059 0.011 -0.082 0.04 0.061 -0.02 -0.037 0.058 -0.03 -0.042 0.057 -0.03 -0.038 0.053 -0.03 -0.037 0.063 -0.02 -0.044 0.053 -0.013 -0.045 0.059 -0.03 -0.038 0.057 -0.032 -0.042 0.056 -0.027 -0.032 0.058 -0.022 -0.023
away_player_X9 -0.056 -0.029 -0.029 0.034 -0.25 -0.029 -0.016 -0.00066 -0.034 0.00063 -0.0058 -0.02 0.026 -0.02 -0.21 -0.19 0.05 0.32 -0.12 -0.066 0.0032 0.042 -0.041 0.069 -0.14 -0.39 -0.44 -0.068 1 -0.29 -0.31 0.00063 nan 0.00063 -0.0045 0.028 0.11 0.1 -0.094 -0.3 0.053 -0.078 0.0032 nan nan 0.00063 0.13 0.13 0.16 -0.12 -0.9 0.082 -0.13 -0.13 -0.16 -0.15 -0.14 -0.14 -0.15 -0.15 -0.15 -0.15 -0.15 -0.15 -0.13 -0.17 -0.16 -0.14 -0.16 -0.13 -0.16 -0.16 -0.16 -0.15 -0.18 -0.074 -0.034 0.03 -0.078 -0.034 0.025 -0.081 -0.034 0.022 -0.074 -0.033 0.023 -0.061 -0.021 0.031 -0.075 -0.034 0.029 -0.069 -0.035 0.021 -0.079 -0.052 0.015 -0.074 -0.028 0.022 -0.071 -0.026 0.031
away_player_X10 0.038 0.024 0.024 -0.015 0.13 0.003 -0.012 0.015 -0.037 -0.002 -0.036 -0.014 -0.034 0.061 0.12 0.086 -0.19 -0.096 0.22 -0.14 -0.0028 -0.1 -0.052 -0.092 0.16 0.22 0.1 -0.59 -0.29 1 -0.63 -0.002 nan 0.011 0.0068 -0.061 -0.11 -0.1 0.18 0.039 -0.21 0.21 -0.0028 nan nan -0.0062 -0.17 -0.26 -0.25 0.53 0.029 -0.9 0.79 0.029 0.042 0.035 0.041 0.034 0.037 0.048 0.039 0.036 0.037 0.011 0.028 0.054 0.049 0.036 0.05 0.024 0.069 0.076 0.019 0.1 0.01 -0.056 0.051 0.072 -0.055 0.057 0.073 -0.053 0.06 0.073 -0.051 0.059 0.072 -0.047 0.036 0.05 -0.049 0.043 0.075 -0.059 0.056 0.081 -0.05 0.062 0.074 -0.065 0.058 0.082 -0.066 0.056 0.082
away_player_X11 -0.014 -0.0098 -0.0098 -0.003 -0.028 0.0088 0.02 -0.011 0.049 nan 0.009 0.01 0.024 -0.03 -0.092 -0.053 0.22 -0.069 -0.15 0.24 nan 0.018 0.013 0.046 -0.042 -0.18 -0.081 0.69 -0.31 -0.63 1 nan nan -0.0065 -0.0069 0.026 0.14 0.13 -0.16 0.14 0.19 -0.21 nan nan nan 0.002 0.058 0.36 0.38 -0.48 0.56 0.78 -0.81 0.033 0.044 0.048 0.029 0.046 0.045 0.031 0.034 0.047 0.036 0.073 0.022 0.04 0.041 0.023 0.041 0.05 0.017 -0.0057 0.067 -0.038 0.11 0.11 -0.0086 -0.073 0.11 -0.018 -0.076 0.11 -0.025 -0.072 0.1 -0.022 -0.071 0.097 -0.0021 -0.06 0.1 0.002 -0.078 0.11 -0.02 -0.079 0.11 -0.012 -0.07 0.12 -0.027 -0.087 0.12 -0.023 -0.084
home_player_Y1 -0.0032 -0.0066 -0.0066 0.025 0.027 0.00097 0.00085 0.0013 -0.011 0.97 0.11 0.032 0.028 -0.018 0.0095 0.013 -0.0088 -0.0027 0.0069 -0.041 0.19 0.031 0.032 0.028 -0.018 0.009 0.013 -0.0049 0.00063 -0.002 nan 1 0.86 -4.1e-05 -9.3e-05 0.026 0.0045 0.0036 0.03 0.011 0.0047 -0.12 0.58 nan -4.1e-05 -5.6e-05 0.019 -0.004 -0.0075 0.0084 -0.00013 0.011 nan 0.006 0.0085 0.0081 0.007 0.0065 0.007 0.0072 0.011 0.0064 0.0037 0.01 0.011 0.0057 0.0072 0.0066 0.0098 0.0088 0.0066 0.011 0.015 0.012 0.0058 -0.0043 0.0045 0.0053 -0.0037 0.0038 0.0061 -0.0036 0.0043 0.0063 -0.0028 0.005 0.0059 -0.0047 -0.0022 0.0015 -0.0033 0.0025 0.007 -0.0086 0.0027 0.0063 -0.002 0.0051 0.0068 -0.0062 0.0032 0.0079 -0.0068 0.004 0.0081
home_player_Y2 -0.0034 -0.007 -0.007 0.034 0.031 0.0016 0.0011 0.0031 -0.015 0.96 0.11 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.86 1 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan 0.0087 0.011 0.0089 0.011 0.011 0.011 0.0097 0.011 0.01 0.0058 0.0092 0.0078 0.0091 0.01 0.01 0.013 0.013 0.0098 0.0099 0.013 0.012 0.0092 -0.003 0.0065 0.0058 -0.0022 0.0052 0.0064 -0.0023 0.0061 0.0075 -0.0015 0.0077 0.0076 nan nan nan -0.0019 0.004 0.0076 -0.0076 0.0043 0.0068 -0.00033 0.0064 0.0074 -0.0045 0.0043 0.0082 -0.0054 0.0056 0.0089
home_player_Y3 -0.0034 -0.0031 -0.0031 -0.00034 -0.0026 -0.0008 -0.00078 -0.0027 -0.0066 -4.1e-05 0.032 -0.001 -0.00071 -0.022 0.015 0.019 -0.013 0.0071 -0.006 0.0018 -5.6e-05 -0.0012 -0.00097 -0.00075 0.0019 0.009 -0.016 -0.0049 0.00063 0.011 -0.0065 -4.1e-05 nan 1 0.45 -0.0016 -0.03 -0.04 -0.0026 -0.0059 0.0047 -0.0056 -7.2e-05 nan -4.1e-05 -5.6e-05 -0.0017 -0.013 0.0035 -0.0027 -0.0058 -0.013 0.007 0.0075 -0.0055 -0.004 -0.0036 0.011 0.0026 -0.0038 0.0075 0.0042 -0.0051 -0.004 -0.0036 -0.0046 -0.004 -2.9e-05 -0.0037 -0.0038 -0.0036 -0.0049 -0.0041 -0.0046 -0.00058 -0.0022 -0.0027 -0.0019 -0.0017 -0.0023 -0.0018 -0.0022 -0.0026 -0.002 -0.002 -0.0021 -0.0018 nan nan nan -0.0015 -0.0029 -0.0022 -0.0024 -0.002 -0.0024 -0.0018 -0.0027 -0.0017 -0.0023 -0.0039 -0.0027 -0.0026 -0.0026 -0.0024
home_player_Y4 -0.01 -0.01 -0.01 0.00034 -0.0019 -0.0011 -0.0009 0.00051 -0.0047 -9.3e-05 0.027 0.057 -0.027 -0.028 0.038 0.0057 -0.0043 -0.0031 -0.0095 0.0041 -0.00012 0.012 0.042 -0.04 0.00065 0.014 -0.0044 -0.0076 -0.0045 0.0068 -0.0069 -9.3e-05 nan 0.45 1 -0.0036 -0.068 -0.012 0.014 -0.0029 0.016 0.01 -0.00016 nan -9.3e-05 -0.00012 -0.0037 -0.0089 0.0029 0.0088 0.0023 -0.018 0.01 -0.00016 -0.01 0.0042 -0.0059 0.0081 -0.0056 -0.0089 0.002 0.002 -0.00026 5.3e-05 -0.001 0.00018 -0.0089 9.4e-05 0.0036 -0.0053 -0.0021 -0.0024 -0.00033 -0.00036 -0.00092 -0.0072 -0.00058 0.0042 -0.0071 0.00042 0.006 -0.0076 0.0011 0.0043 -0.0071 -0.00054 0.0045 -0.0083 0.0041 0.014 -0.0067 -0.00029 0.0045 -0.0082 1.3e-05 0.0049 -0.0066 -0.00068 0.0061 -0.0046 -0.0068 -0.0036 -0.0046 -0.0056 -0.0039
home_player_Y5 -0.049 -0.056 -0.056 0.019 0.059 -0.00091 0.0078 -0.0075 -0.0083 0.026 0.61 0.4 0.52 -0.94 0.066 0.16 0.3 0.11 -0.16 0.059 0.0031 0.12 0.068 0.1 -0.23 0.029 0.0064 0.12 0.028 -0.061 0.026 0.026 nan -0.0016 -0.0036 1 0.16 0.14 -0.098 0.0025 0.16 -0.066 0.013 nan -0.0016 -0.0022 0.23 0.0009 0.031 -0.098 -0.002 0.056 -0.032 0.021 -0.015 -0.051 -0.0087 0.006 -0.0089 -0.035 0.024 -0.0075 -0.0034 -0.014 0.012 -0.018 -0.019 -0.016 -0.0084 -0.0048 -0.017 -0.012 -0.02 -0.025 -0.0043 -0.01 -0.024 -0.0034 -0.0073 -0.016 0.0056 -0.0076 -0.0074 -0.0017 -0.008 -0.015 0.0016 -0.014 -0.023 0.014 -0.0061 -0.024 0.0022 -0.0086 -0.034 -0.0097 -0.0066 -0.02 0.0038 -0.0065 -0.02 -0.003 -0.007 -0.023 -0.0065
home_player_Y6 0.069 0.076 0.076 0.015 -0.016 0.014 0.01 0.023 -0.007 0.0045 0.24 0.2 0.18 -0.13 -0.78 -0.13 0.51 0.14 -0.26 0.35 0.0045 0.017 0.0047 0.0024 -0.0059 -0.27 -0.17 0.22 0.11 -0.11 0.14 0.0045 nan -0.03 -0.068 0.16 1 0.52 -0.18 0.047 0.29 -0.4 0.0029 nan 0.0045 0.0022 0.0056 0.31 0.25 -0.14 -0.057 0.12 -0.2 -0.00048 0.0081 -0.0013 0.01 0.018 0.041 -0.0061 -0.0061 0.031 -0.024 0.044 0.0076 0.021 0.019 0.019 0.022 0.023 0.014 0.0054 0.012 0.017 0.033 -0.018 0.047 0.039 -0.025 0.033 0.035 -0.02 0.027 0.033 -0.017 0.045 0.041 -0.051 0.039 0.044 -0.023 0.046 0.035 -0.0017 0.039 0.029 -0.022 0.038 0.038 -0.00091 0.04 0.022 0.0039 0.046 0.033
home_player_Y7 -0.014 -0.0058 -0.0058 0.0015 -0.03 0.0013 0.0064 0.00088 0.0091 0.0036 0.091 0.059 0.046 -0.14 -0.26 -0.68 0.6 0.17 -0.29 0.39 0.0027 0.028 0.016 -0.013 -0.021 -0.2 -0.18 0.2 0.1 -0.1 0.13 0.0036 nan -0.04 -0.012 0.14 0.52 1 -0.21 0.05 0.36 -0.34 -0.00011 nan 0.0036 -8.2e-05 0.017 0.23 0.26 -0.12 -0.046 0.11 -0.17 -0.0099 -0.001 -0.0023 -0.00067 0.016 0.04 0.027 -0.026 0.033 -0.036 0.053 0.0078 0.011 0.025 0.013 0.024 0.021 0.013 0.0069 0.0091 0.015 0.037 0.016 0.042 0.024 0.012 0.03 0.016 0.014 0.018 0.014 0.018 0.037 0.023 0.013 0.049 0.03 0.013 0.044 0.019 0.02 0.016 0.0047 0.012 0.035 0.023 0.017 0.01 -0.0061 0.021 0.017 0.0037
home_player_Y8 0.1 0.08 0.08 -0.0021 0.22 0.0062 0.0029 -0.00046 0.011 0.03 -0.047 -0.02 -0.046 0.096 0.38 0.4 -0.75 -0.11 0.57 -0.49 0.0049 -0.046 -0.0074 -0.038 0.079 0.2 0.15 -0.27 -0.094 0.18 -0.16 0.03 nan -0.0026 0.014 -0.098 -0.18 -0.21 1 -0.0028 -0.57 0.56 0.021 nan -0.0026 0.0014 -0.086 -0.14 -0.12 0.32 0.044 -0.18 0.22 0.083 0.11 0.1 0.099 0.087 0.064 0.11 0.14 0.078 0.14 0.058 0.085 0.11 0.089 0.084 0.097 0.094 0.098 0.11 0.094 0.099 0.066 0.017 0.025 -0.017 0.022 0.028 -0.015 0.022 0.028 -0.015 0.023 0.038 -0.0069 0.00087 -0.002 0.003 0.023 0.016 -0.0062 0.014 0.026 -0.02 0.026 0.037 -0.0097 0.021 0.03 -0.027 0.018 0.025 -0.031
home_player_Y9 0.033 0.0091 0.0091 -0.03 0.23 0.029 0.025 0.049 -0.0087 0.011 0.037 0.081 0.022 0.018 0.28 0.33 0.28 -0.9 0.076 0.54 -0.036 -0.002 0.015 -0.0054 -0.0054 0.18 0.15 0.023 -0.3 0.039 0.14 0.011 nan -0.0059 -0.0029 0.0025 0.047 0.05 -0.0028 1 0.18 -0.092 -0.017 nan -0.04 -0.036 0.0027 -0.059 -0.04 0.048 0.31 0.029 0.00032 0.12 0.17 0.14 0.14 0.15 0.14 0.15 0.15 0.16 0.13 0.2 0.14 0.16 0.16 0.13 0.15 0.14 0.15 0.15 0.16 0.15 0.16 -0.039 0.12 0.1 -0.038 0.11 0.1 -0.036 0.11 0.11 -0.037 0.12 0.1 -0.038 0.11 0.093 -0.043 0.12 0.1 -0.039 0.1 0.096 -0.032 0.13 0.11 -0.043 0.088 0.092 -0.047 0.091 0.087
home_player_Y10 -0.054 -0.041 -0.041 0.0016 -0.12 -0.0072 0.0015 0.043 -0.014 0.0047 0.092 0.041 0.084 -0.14 -0.23 -0.19 0.68 0.11 -0.9 0.77 -0.033 0.011 0.0043 0.03 -0.048 -0.11 -0.098 0.22 0.053 -0.21 0.19 0.0047 nan 0.0047 0.016 0.16 0.29 0.36 -0.57 0.18 1 -0.81 -0.013 nan -0.037 -0.037 0.05 0.12 0.13 -0.2 0.015 0.22 -0.23 -0.032 -0.039 -0.037 -0.035 -0.026 -0.0034 -0.048 -0.067 -0.015 -0.096 0.017 -0.021 -0.039 -0.021 -0.021 -0.021 -0.027 -0.034 -0.033 -0.023 -0.032 0.0039 -0.056 0.035 0.064 -0.06 0.027 0.063 -0.06 0.024 0.063 -0.06 0.02 0.056 -0.047 0.031 0.045 -0.064 0.046 0.054 -0.052 0.038 0.062 -0.06 0.023 0.058 -0.054 0.039 0.068 -0.051 0.045 0.071
home_player_Y11 0.018 -5.8e-05 -5.8e-05 -0.00021 0.16 0.0098 -0.0043 -0.037 0.012 -0.12 -0.034 0.023 -0.037 0.071 0.38 0.22 -0.61 -0.15 0.77 -0.77 -0.14 -0.02 -0.004 -0.031 0.031 0.19 0.13 -0.25 -0.078 0.21 -0.21 -0.12 nan -0.0056 0.01 -0.066 -0.4 -0.34 0.56 -0.092 -0.81 1 -0.19 nan -0.095 -0.081 -0.034 -0.19 -0.18 0.22 0.009 -0.22 0.27 0.043 0.045 0.033 0.041 0.032 -0.0028 0.049 0.076 0.016 0.1 -0.021 0.024 0.043 0.028 0.017 0.024 0.029 0.036 0.032 0.022 0.032 -0.0036 0.039 -0.047 -0.07 0.044 -0.038 -0.066 0.045 -0.03 -0.066 0.043 -0.03 -0.06 0.034 -0.052 -0.055 0.048 -0.058 -0.058 0.029 -0.047 -0.065 0.045 -0.034 -0.064 0.038 -0.042 -0.064 0.034 -0.048 -0.069
away_player_Y1 0.0071 0.0072 0.0072 0.0037 -0.0037 -0.0006 -0.002 -0.0019 0.0081 0.58 0.017 0.017 0.015 -0.0084 0.0074 0.013 -0.0064 -0.0084 -0.0054 -0.056 0.78 0.09 0.027 0.024 -0.019 0.013 0.0026 0.00026 0.0032 -0.0028 nan 0.58 nan -7.2e-05 -0.00016 0.013 0.0029 -0.00011 0.021 -0.017 -0.013 -0.19 1 nan 0.58 0.52 0.036 0.013 0.025 0.027 -0.00018 0.015 nan 0.00073 -0.0043 0.0067 -0.0057 -0.0079 -0.0022 0.0049 0.0061 -0.0077 -0.0052 0.0025 0.012 -0.0028 -0.00056 -0.0017 -0.0021 -0.0019 -0.002 0.0051 0.0048 -0.00076 0.0021 -0.0041 -0.0049 -0.0021 -0.004 -0.0043 -0.0018 -0.0038 -0.005 -0.0029 -0.0031 -0.0062 -0.0035 -0.0047 -0.0022 0.0015 -0.0033 -0.0053 -0.0023 -0.0043 -0.0057 -0.0026 -0.0036 -0.0038 -0.0018 -0.0048 -0.0057 -0.0023 -0.0045 -0.0056 -0.0029
away_player_Y2 nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
away_player_Y3 0.0048 0.0051 0.0051 0.0058 -0.0025 -0.00018 -0.0027 -0.0077 0.016 -4.1e-05 -0.0012 -0.001 -0.00071 0.0018 -0.00097 0.0014 0.0064 -0.016 -0.015 -0.015 0.96 0.094 -0.018 -0.015 -0.0021 -0.00098 0.0015 0.0065 nan nan nan -4.1e-05 nan -4.1e-05 -9.3e-05 -0.0016 0.0045 0.0036 -0.0026 -0.04 -0.037 -0.095 0.58 nan 1 0.89 0.025 0.03 0.036 0.031 nan nan nan 0.0074 nan 0.013 -0.0014 -0.0047 -0.00026 nan 0.0097 -0.005 -0.0044 0.0036 0.0064 0.0032 0.006 0.0042 0.003 -0.0033 -0.00042 -0.00063 0.0036 nan 0.012 -0.00095 -0.0038 -0.003 -0.00067 -0.0042 -0.003 -0.0013 -0.0043 -0.0027 -0.00017 -0.0054 -0.0035 nan nan nan -0.00034 -0.0047 -0.0033 -0.00079 -0.0051 -0.0035 -0.00061 -0.0035 -0.0029 -0.00059 -0.0054 -0.0041 -0.0007 -0.0055 -0.0041
away_player_Y4 0.002 0.002 0.002 0.0067 -0.0008 -0.00023 -0.0025 -0.0081 0.016 -5.6e-05 -0.0017 -0.0014 -0.00095 0.0024 0.001 0.0045 0.0018 -0.015 -0.01 -0.016 0.86 0.098 0.014 -0.02 -0.012 0.0054 -0.00059 0.0053 0.00063 -0.0062 0.002 -5.6e-05 nan -5.6e-05 -0.00012 -0.0022 0.0022 -8.2e-05 0.0014 -0.036 -0.037 -0.081 0.52 nan 0.89 1 0.022 0.014 0.034 0.036 -0.0058 0.011 0.007 0.0054 0.0086 0.011 0.0015 -0.006 0.0061 -0.0031 0.0067 -0.00075 -0.0043 0.0033 0.0087 0.0011 0.0039 0.0062 0.0076 -0.00019 0.0011 -0.0024 0.005 0.0035 0.0085 -0.00023 -0.0057 -0.0044 -7.3e-05 -0.0057 -0.0043 -0.00045 -0.0057 -0.0042 0.0005 -0.0067 -0.0048 0.0014 -0.0063 -0.005 0.00022 -0.0056 -0.0046 0.00018 -0.0072 -0.0052 0.00011 -0.0048 -0.0042 -0.00059 -0.0054 -0.0041 -0.0007 -0.0055 -0.0041
away_player_Y5 -0.044 -0.053 -0.053 0.028 0.065 0.0037 0.0065 -0.0095 -0.0057 0.019 0.13 0.071 0.12 -0.23 0.028 0.027 0.1 0.016 -0.056 0.021 0.031 0.6 0.41 0.53 -0.94 0.058 0.15 0.31 0.13 -0.17 0.058 0.019 nan -0.0017 -0.0037 0.23 0.0056 0.017 -0.086 0.0027 0.05 -0.034 0.036 nan 0.025 0.022 1 0.17 0.14 -0.099 -0.0026 0.16 -0.066 0.014 -0.022 -0.031 -0.012 -0.013 -0.013 -0.019 -0.0079 -0.013 -0.018 -0.013 0.021 -0.0097 -0.049 -0.0016 0.0031 0.0037 -0.028 0.02 0.00096 -0.0045 -0.00035 -0.011 -0.025 -0.00099 -0.0077 -0.018 0.0025 -0.0089 -0.01 0.00078 -0.0089 -0.019 -0.00084 -0.0061 -0.037 -0.005 -0.006 -0.027 -0.00099 -0.016 -0.028 0.0027 -0.0052 -0.025 -0.00061 -0.013 -0.015 0.01 -0.014 -0.017 0.0063
away_player_Y6 0.06 0.068 0.068 0.0096 -0.028 -0.0029 0.012 -0.019 0.023 -0.004 0.0093 0.0092 0.0065 -0.0049 -0.28 -0.16 0.22 0.11 -0.12 0.13 0.027 0.27 0.22 0.22 -0.13 -0.8 -0.097 0.51 0.13 -0.26 0.36 -0.004 nan -0.013 -0.0089 0.0009 0.31 0.23 -0.14 -0.059 0.12 -0.19 0.013 nan 0.03 0.014 0.17 1 0.48 -0.19 0.063 0.3 -0.4 0.0028 0.014 0.015 0.0087 0.021 0.018 0.013 -1.2e-05 0.014 0.0037 0.033 -0.011 0.0099 -0.0061 0.0027 0.0097 0.04 -0.017 -0.012 0.024 -0.024 0.037 0.057 -0.0084 -0.042 0.053 -0.024 -0.05 0.053 -0.026 -0.045 0.057 -0.016 -0.044 0.078 -0.048 -0.089 0.053 -0.012 -0.05 0.044 -0.0033 -0.028 0.054 -0.022 -0.05 0.035 0.0029 -0.023 0.038 0.0063 -0.009
away_player_Y7 -0.017 -0.0097 -0.0097 0.003 -0.019 -0.0084 0.0086 0.0012 0.0019 -0.0075 0.033 0.033 0.005 -0.036 -0.21 -0.17 0.21 0.096 -0.13 0.13 0.036 0.086 0.057 0.048 -0.14 -0.24 -0.7 0.6 0.16 -0.25 0.38 -0.0075 nan 0.0035 0.0029 0.031 0.25 0.26 -0.12 -0.04 0.13 -0.18 0.025 nan 0.036 0.034 0.14 0.48 1 -0.23 0.044 0.33 -0.34 0.0062 0.016 0.018 0.0074 0.031 0.024 0.011 0.012 0.022 0.007 0.038 -0.0026 0.013 0.0094 -0.0019 0.014 0.03 0.032 -0.024 0.036 -0.03 0.055 0.031 0.032 0.0089 0.025 0.021 0.00055 0.025 0.015 0.0062 0.03 0.027 0.01 0.044 0.016 -0.0064 0.026 0.032 0.0046 0.018 0.016 0.0056 0.029 0.02 0.0026 0.011 0.023 0.0097 0.014 0.026 0.023
away_player_Y8 0.096 0.074 0.074 -0.0096 0.21 0.011 0.0041 0.017 -0.0062 0.0084 -0.052 -0.024 -0.045 0.095 0.2 0.15 -0.28 -0.11 0.21 -0.16 0.033 -0.039 -0.019 -0.027 0.095 0.38 0.4 -0.75 -0.12 0.53 -0.48 0.0084 nan -0.0027 0.0088 -0.098 -0.14 -0.12 0.32 0.048 -0.2 0.22 0.027 nan 0.031 0.036 -0.099 -0.19 -0.23 1 -0.00048 -0.54 0.56 0.077 0.11 0.086 0.095 0.093 0.078 0.1 0.1 0.092 0.095 0.073 0.081 0.1 0.09 0.088 0.097 0.066 0.11 0.13 0.074 0.14 0.054 -0.022 0.042 0.02 -0.02 0.049 0.026 -0.016 0.046 0.022 -0.012 0.052 0.023 -0.038 0.016 0.027 -0.013 0.033 0.028 -0.023 0.051 0.024 -0.015 0.057 0.031 -0.021 0.054 0.019 -0.021 0.048 0.011
away_player_Y9 0.035 0.01 0.01 -0.028 0.24 0.032 0.027 -0.0044 0.045 -0.00013 0.012 0.02 -0.0033 -0.0047 0.17 0.15 0.023 -0.3 0.056 0.13 -0.00018 0.028 0.086 0.021 0.028 0.26 0.34 0.29 -0.9 0.029 0.56 -0.00013 nan -0.0058 0.0023 -0.002 -0.057 -0.046 0.044 0.31 0.015 0.009 -0.00018 nan nan -0.0058 -0.0026 0.063 0.044 -0.00048 1 0.21 -0.13 0.14 0.16 0.15 0.14 0.15 0.15 0.15 0.15 0.16 0.15 0.16 0.12 0.18 0.15 0.14 0.17 0.14 0.15 0.15 0.17 0.13 0.2 0.095 0.024 -0.052 0.099 0.022 -0.048 0.1 0.02 -0.043 0.095 0.02 -0.044 0.078 0.008 -0.05 0.093 0.026 -0.052 0.091 0.025 -0.044 0.1 0.04 -0.037 0.099 0.018 -0.047 0.096 0.018 -0.053
away_player_Y10 -0.037 -0.026 -0.026 0.0056 -0.094 0.0041 0.016 -0.014 0.048 0.011 0.02 0.0088 0.042 -0.056 -0.1 -0.073 0.21 0.038 -0.21 0.18 0.015 0.089 0.055 0.1 -0.14 -0.2 -0.12 0.67 0.082 -0.9 0.78 0.011 nan -0.013 -0.018 0.056 0.12 0.11 -0.18 0.029 0.22 -0.22 0.015 nan nan 0.011 0.16 0.3 0.33 -0.54 0.21 1 -0.83 0.00057 -0.011 -0.0021 -0.014 -0.0025 -0.0077 -0.02 -0.0082 -0.0066 -0.0086 0.024 -0.01 -0.018 -0.02 -0.012 -0.011 0.0038 -0.033 -0.048 0.01 -0.082 0.038 0.08 -0.047 -0.087 0.08 -0.055 -0.088 0.078 -0.06 -0.087 0.074 -0.057 -0.085 0.07 -0.033 -0.064 0.072 -0.038 -0.09 0.082 -0.054 -0.095 0.075 -0.056 -0.086 0.089 -0.058 -0.097 0.089 -0.056 -0.097
away_player_Y11 0.0076 -0.0086 -0.0086 -0.0037 0.14 -0.0063 -0.014 0.013 -0.04 nan -0.011 -0.0027 -0.028 0.035 0.2 0.13 -0.25 -0.072 0.22 -0.21 nan -0.024 0.023 -0.04 0.067 0.36 0.18 -0.62 -0.13 0.79 -0.81 nan nan 0.007 0.01 -0.032 -0.2 -0.17 0.22 0.00032 -0.23 0.27 nan nan nan 0.007 -0.066 -0.4 -0.34 0.56 -0.13 -0.83 1 0.018 0.025 0.01 0.024 0.0085 0.016 0.028 0.021 0.014 0.022 -0.017 0.028 0.027 0.015 0.029 0.023 -0.00049 0.047 0.068 -0.0044 0.091 -0.034 -0.086 0.024 0.062 -0.084 0.035 0.067 -0.082 0.044 0.067 -0.078 0.039 0.065 -0.088 0.0097 0.054 -0.076 0.014 0.069 -0.083 0.031 0.067 -0.08 0.037 0.066 -0.085 0.036 0.071 -0.086 0.031 0.067
home_player_1 0.11 0.073 0.073 -0.0045 0.39 0.043 0.051 -0.016 0.028 0.0075 0.041 0.034 0.00051 -0.024 0.094 0.099 -0.026 -0.13 0.053 0.0054 0.0059 0.033 0.041 -0.0004 -0.021 0.09 0.089 -0.013 -0.13 0.029 0.033 0.006 0.0087 0.0075 -0.00016 0.021 -0.00048 -0.0099 0.083 0.12 -0.032 0.043 0.00073 nan 0.0074 0.0054 0.014 0.0028 0.0062 0.077 0.14 0.00057 0.018 1 0.3 0.25 0.27 0.27 0.26 0.27 0.27 0.26 0.29 0.27 0.17 0.23 0.2 0.21 0.22 0.22 0.23 0.24 0.25 0.23 0.23 0.056 -0.024 -0.074 0.061 -0.026 -0.074 0.063 -0.026 -0.073 0.069 -0.013 -0.061 0.065 -0.07 -0.1 0.058 -0.029 -0.072 0.032 -0.023 -0.062 0.065 -0.0092 -0.066 0.036 -0.015 -0.055 0.03 -0.015 -0.052
home_player_2 0.14 0.1 0.1 0.0076 0.49 0.1 0.077 -0.027 0.029 0.01 0.0099 0.024 -0.016 0.01 0.11 0.11 -0.032 -0.17 0.071 0.025 -0.0043 0.014 0.035 -0.03 0.016 0.093 0.095 -0.024 -0.16 0.042 0.044 0.0085 0.011 -0.0055 -0.01 -0.015 0.0081 -0.001 0.11 0.17 -0.039 0.045 -0.0043 nan nan 0.0086 -0.022 0.014 0.016 0.11 0.16 -0.011 0.025 0.3 1 0.3 0.3 0.32 0.31 0.32 0.32 0.32 0.33 0.32 0.24 0.31 0.28 0.26 0.27 0.29 0.28 0.29 0.29 0.3 0.3 0.047 0.0031 -0.058 0.049 -0.0058 -0.057 0.052 -0.0019 -0.052 0.059 0.016 -0.038 0.026 -0.049 -0.071 0.049 -0.0058 -0.053 0.054 -0.0085 -0.068 0.053 0.02 -0.044 0.06 -0.0067 -0.065 0.06 -0.0032 -0.065
home_player_3 0.16 0.13 0.13 0.016 0.41 0.066 0.053 -0.0039 0.028 0.0089 0.0095 0.02 -0.05 0.036 0.093 0.089 -0.043 -0.15 0.069 0.023 0.013 0.016 0.028 -0.033 0.022 0.084 0.082 -0.017 -0.15 0.035 0.048 0.0081 0.0089 -0.004 0.0042 -0.051 -0.0013 -0.0023 0.1 0.14 -0.037 0.033 0.0067 nan 0.013 0.011 -0.031 0.015 0.018 0.086 0.15 -0.0021 0.01 0.25 0.3 1 0.26 0.29 0.29 0.29 0.28 0.3 0.31 0.31 0.22 0.27 0.25 0.24 0.26 0.27 0.24 0.27 0.28 0.26 0.26 0.039 0.019 -0.03 0.041 0.01 -0.032 0.041 0.013 -0.028 0.048 0.028 -0.013 0.027 -0.012 -0.031 0.038 0.017 -0.031 0.037 -0.0059 -0.052 0.046 0.039 -0.02 0.043 -0.0084 -0.049 0.039 -0.00082 -0.05
home_player_4 0.17 0.13 0.13 -0.0068 0.42 0.082 0.078 -0.011 0.025 0.0092 0.044 0.053 -0.026 -0.0037 0.096 0.1 -0.033 -0.15 0.062 0.017 -0.003 0.028 0.036 -0.023 0.0031 0.087 0.087 -0.027 -0.14 0.041 0.029 0.007 0.011 -0.0036 -0.0059 -0.0087 0.01 -0.00067 0.099 0.14 -0.035 0.041 -0.0057 nan -0.0014 0.0015 -0.012 0.0087 0.0074 0.095 0.14 -0.014 0.024 0.27 0.3 0.26 1 0.3 0.29 0.27 0.29 0.31 0.32 0.31 0.21 0.25 0.23 0.24 0.23 0.26 0.24 0.27 0.27 0.27 0.26 0.051 0.008 -0.043 0.052 0.0042 -0.041 0.054 0.0044 -0.04 0.061 0.017 -0.025 0.045 -0.035 -0.053 0.053 0.0045 -0.042 0.048 -0.014 -0.057 0.058 0.025 -0.03 0.042 -0.019 -0.051 0.04 -0.018 -0.054
home_player_5 0.11 0.073 0.073 0.0084 0.46 0.055 0.053 -0.025 0.036 0.0087 0.049 0.052 -0.013 -0.02 0.093 0.096 -0.012 -0.16 0.06 0.034 -0.0063 0.019 0.041 -0.02 0.0039 0.088 0.079 -0.014 -0.14 0.034 0.046 0.0065 0.011 0.011 0.0081 0.006 0.018 0.016 0.087 0.15 -0.026 0.032 -0.0079 nan -0.0047 -0.006 -0.013 0.021 0.031 0.093 0.15 -0.0025 0.0085 0.27 0.32 0.29 0.3 1 0.28 0.28 0.29 0.31 0.31 0.32 0.22 0.26 0.25 0.25 0.26 0.26 0.25 0.27 0.28 0.28 0.27 0.064 -0.0037 -0.066 0.065 -0.012 -0.066 0.068 -0.0087 -0.063 0.074 0.007 -0.046 0.055 -0.059 -0.085 0.066 -0.013 -0.063 0.051 -0.016 -0.067 0.07 0.013 -0.053 0.044 -0.0046 -0.051 0.042 -0.00015 -0.052
home_player_6 0.15 0.11 0.11 0.013 0.47 0.079 0.058 -0.01 0.037 0.009 0.015 0.036 -0.022 -0.00019 0.061 0.07 0.011 -0.13 0.03 0.051 -0.00093 0.031 0.046 -0.033 0.005 0.082 0.078 -0.0025 -0.15 0.037 0.045 0.007 0.011 0.0026 -0.0056 -0.0089 0.041 0.04 0.064 0.14 -0.0034 -0.0028 -0.0022 nan -0.00026 0.0061 -0.013 0.018 0.024 0.078 0.15 -0.0077 0.016 0.26 0.31 0.29 0.29 0.28 1 0.28 0.3 0.32 0.31 0.3 0.23 0.29 0.26 0.26 0.26 0.27 0.27 0.28 0.28 0.27 0.28 0.057 0.0098 -0.046 0.059 0.00095 -0.045 0.062 0.0056 -0.047 0.07 0.022 -0.025 0.041 -0.037 -0.054 0.059 0.0049 -0.046 0.062 -0.01 -0.068 0.065 0.028 -0.034 0.072 -0.0018 -0.058 0.071 0.0071 -0.058
home_player_7 0.15 0.11 0.11 -0.0034 0.44 0.069 0.063 -0.0065 0.018 0.0087 0.015 0.028 -0.049 0.024 0.12 0.073 -0.046 -0.16 0.08 0.016 0.0049 0.019 0.032 -0.026 0.013 0.089 0.092 -0.028 -0.15 0.048 0.031 0.0072 0.0097 -0.0038 -0.0089 -0.035 -0.0061 0.027 0.11 0.15 -0.048 0.049 0.0049 nan nan -0.0031 -0.019 0.013 0.011 0.1 0.15 -0.02 0.028 0.27 0.32 0.29 0.27 0.28 0.28 1 0.28 0.29 0.3 0.28 0.21 0.29 0.26 0.25 0.26 0.27 0.25 0.26 0.27 0.28 0.28 0.057 0.028 -0.035 0.057 0.023 -0.033 0.058 0.02 -0.032 0.065 0.038 -0.015 0.045 -0.014 -0.047 0.057 0.024 -0.032 0.042 0.0088 -0.043 0.063 0.045 -0.023 0.047 0.023 -0.029 0.047 0.027 -0.03
home_player_8 0.13 0.091 0.091 0.0096 0.48 0.07 0.065 -0.017 0.022 0.012 0.054 0.053 -0.0032 -0.028 0.13 0.14 -0.068 -0.16 0.098 -0.019 0.0095 0.021 0.038 -0.016 -0.00019 0.11 0.086 -0.024 -0.15 0.039 0.034 0.011 0.011 0.0075 0.002 0.024 -0.0061 -0.026 0.14 0.15 -0.067 0.076 0.0061 nan 0.0097 0.0067 -0.0079 -1.2e-05 0.012 0.1 0.15 -0.0082 0.021 0.27 0.32 0.28 0.29 0.29 0.3 0.28 1 0.31 0.32 0.31 0.23 0.29 0.26 0.25 0.26 0.28 0.26 0.28 0.29 0.28 0.27 0.05 0.0091 -0.044 0.053 0.0047 -0.043 0.052 0.01 -0.043 0.06 0.022 -0.023 0.04 -0.029 -0.045 0.053 0.0047 -0.041 0.041 -0.0037 -0.058 0.057 0.028 -0.029 0.061 -0.011 -0.065 0.057 -0.0091 -0.063
home_player_9 0.12 0.076 0.076 -2.1e-05 0.49 0.095 0.058 -0.013 0.025 0.0086 0.029 0.04 -0.027 -0.0014 0.082 0.08 0.0051 -0.16 0.048 0.049 -0.0064 0.033 0.028 -0.017 0.0008 0.093 0.081 -0.012 -0.15 0.036 0.047 0.0064 0.01 0.0042 0.002 -0.0075 0.031 0.033 0.078 0.16 -0.015 0.016 -0.0077 nan -0.005 -0.00075 -0.013 0.014 0.022 0.092 0.16 -0.0066 0.014 0.26 0.32 0.3 0.31 0.31 0.32 0.29 0.31 1 0.32 0.3 0.23 0.31 0.27 0.27 0.28 0.29 0.29 0.29 0.3 0.29 0.29 0.035 0.011 -0.038 0.036 0.0053 -0.037 0.04 0.011 -0.036 0.046 0.027 -0.018 0.019 -0.043 -0.054 0.036 0.0061 -0.034 0.031 0.0028 -0.041 0.042 0.031 -0.026 0.03 0.025 -0.019 0.033 0.028 -0.025
home_player_10 0.14 0.1 0.1 0.015 0.47 0.077 0.07 -0.034 0.026 0.0048 0.034 0.044 -0.026 -0.0051 0.13 0.13 -0.081 -0.16 0.12 -0.043 -0.0052 0.022 0.037 -0.031 0.0085 0.097 0.096 -0.027 -0.15 0.037 0.036 0.0037 0.0058 -0.0051 -0.00026 -0.0034 -0.024 -0.036 0.14 0.13 -0.096 0.1 -0.0052 nan -0.0044 -0.0043 -0.018 0.0037 0.007 0.095 0.15 -0.0086 0.022 0.29 0.33 0.31 0.32 0.31 0.31 0.3 0.32 0.32 1 0.32 0.24 0.3 0.26 0.27 0.27 0.28 0.27 0.29 0.29 0.28 0.28 0.076 -0.025 -0.09 0.078 -0.032 -0.088 0.081 -0.031 -0.088 0.088 -0.015 -0.069 0.071 -0.073 -0.1 0.08 -0.035 -0.085 0.071 -0.043 -0.098 0.084 -0.0081 -0.077 0.063 -0.048 -0.096 0.063 -0.047 -0.097
home_player_11 0.11 0.074 0.074 -0.0039 0.44 0.076 0.054 -0.034 0.031 0.01 0.019 0.022 -0.024 0.0082 0.085 0.066 0.029 -0.19 0.035 0.097 0.0036 0.025 0.032 -0.033 0.0053 0.078 0.072 0.01 -0.15 0.011 0.073 0.01 0.0092 -0.004 5.3e-05 -0.014 0.044 0.053 0.058 0.2 0.017 -0.021 0.0025 nan 0.0036 0.0033 -0.013 0.033 0.038 0.073 0.16 0.024 -0.017 0.27 0.32 0.31 0.31 0.32 0.3 0.28 0.31 0.3 0.32 1 0.23 0.3 0.26 0.27 0.26 0.28 0.27 0.28 0.28 0.28 0.28 0.072 -0.012 -0.075 0.074 -0.023 -0.075 0.075 -0.024 -0.075 0.082 -0.0053 -0.058 0.07 -0.065 -0.095 0.071 -0.015 -0.075 0.054 -0.026 -0.078 0.08 0.0046 -0.061 0.056 -0.033 -0.078 0.054 -0.028 -0.078
away_player_1 0.1 0.07 0.07 0.0026 0.39 0.048 0.047 0.035 -0.013 0.0099 0.036 0.042 -0.01 -0.019 0.092 0.096 -0.022 -0.14 0.055 0.024 0.0088 0.039 0.043 -0.0099 -0.026 0.1 0.092 -0.021 -0.13 0.028 0.022 0.011 0.0078 -0.0036 -0.001 0.012 0.0076 0.0078 0.085 0.14 -0.021 0.024 0.012 nan 0.0064 0.0087 0.021 -0.011 -0.0026 0.081 0.12 -0.01 0.028 0.17 0.24 0.22 0.21 0.22 0.23 0.21 0.23 0.23 0.24 0.23 1 0.3 0.25 0.27 0.27 0.26 0.28 0.27 0.26 0.27 0.26 -0.068 0.047 0.051 -0.066 0.046 0.056 -0.065 0.048 0.054 -0.06 0.06 0.072 -0.11 0.022 0.067 -0.066 0.042 0.052 -0.054 0.034 0.027 -0.062 0.065 0.064 -0.056 0.034 0.036 -0.052 0.036 0.03
away_player_2 0.15 0.1 0.1 0.012 0.49 0.062 0.095 0.028 -0.0067 0.0075 0.03 0.043 -0.031 0.0098 0.097 0.097 -0.031 -0.17 0.076 0.023 0.0015 0.021 0.026 -0.035 0.0091 0.11 0.1 -0.023 -0.17 0.054 0.04 0.0057 0.0091 -0.0046 0.00018 -0.018 0.021 0.011 0.11 0.16 -0.039 0.043 -0.0028 nan 0.0032 0.0011 -0.0097 0.0099 0.013 0.1 0.18 -0.018 0.027 0.23 0.31 0.27 0.25 0.26 0.29 0.29 0.29 0.31 0.3 0.3 0.3 1 0.3 0.31 0.33 0.31 0.32 0.32 0.32 0.34 0.34 -0.033 0.062 0.037 -0.032 0.053 0.039 -0.028 0.06 0.041 -0.023 0.076 0.062 -0.057 0.019 0.037 -0.031 0.054 0.04 -0.037 0.042 0.023 -0.025 0.081 0.051 -0.05 0.057 0.05 -0.051 0.061 0.042
away_player_3 0.16 0.13 0.13 0.012 0.41 0.049 0.072 0.027 -0.007 0.009 0.029 0.028 -0.021 0.0088 0.094 0.083 -0.021 -0.16 0.059 0.036 0.0044 1.6e-05 0.0089 -0.047 0.035 0.097 0.079 -0.028 -0.16 0.049 0.041 0.0072 0.01 -0.004 -0.0089 -0.019 0.019 0.025 0.089 0.16 -0.021 0.028 -0.00056 nan 0.006 0.0039 -0.049 -0.0061 0.0094 0.09 0.15 -0.02 0.015 0.2 0.28 0.25 0.23 0.25 0.26 0.26 0.26 0.27 0.26 0.26 0.25 0.3 1 0.26 0.29 0.3 0.28 0.28 0.3 0.3 0.31 -0.02 0.054 0.031 -0.019 0.049 0.034 -0.016 0.047 0.033 -0.012 0.062 0.049 -0.028 0.014 0.016 -0.019 0.052 0.031 -0.044 0.051 0.043 -0.015 0.074 0.041 -0.053 0.068 0.068 -0.054 0.073 0.059
away_player_4 0.16 0.13 0.13 0.0017 0.43 0.069 0.083 0.017 -0.0065 0.0085 0.025 0.023 -0.015 0.0063 0.079 0.08 -0.022 -0.13 0.053 0.029 0.0027 0.034 0.049 -0.021 -0.006 0.093 0.097 -0.025 -0.14 0.036 0.023 0.0066 0.01 -2.9e-05 9.4e-05 -0.016 0.019 0.013 0.084 0.13 -0.021 0.017 -0.0017 nan 0.0042 0.0062 -0.0016 0.0027 -0.0019 0.088 0.14 -0.012 0.029 0.21 0.26 0.24 0.24 0.25 0.26 0.25 0.25 0.27 0.27 0.27 0.27 0.31 0.26 1 0.29 0.28 0.28 0.3 0.31 0.32 0.31 -0.017 0.057 0.024 -0.017 0.051 0.031 -0.015 0.048 0.028 -0.0072 0.066 0.044 -0.034 0.022 0.019 -0.014 0.049 0.031 -0.036 0.039 0.029 -0.0095 0.075 0.04 -0.038 0.047 0.044 -0.038 0.047 0.035
away_player_5 0.11 0.068 0.068 0.011 0.46 0.058 0.059 0.023 -0.011 0.012 0.03 0.04 -0.022 -0.0031 0.089 0.084 -0.022 -0.14 0.058 0.028 0.0017 0.038 0.047 -0.0057 -0.012 0.1 0.089 -0.017 -0.16 0.05 0.041 0.0098 0.013 -0.0037 0.0036 -0.0084 0.022 0.024 0.097 0.15 -0.021 0.024 -0.0021 nan 0.003 0.0076 0.0031 0.0097 0.014 0.097 0.17 -0.011 0.023 0.22 0.27 0.26 0.23 0.26 0.26 0.26 0.26 0.28 0.27 0.26 0.27 0.33 0.29 0.29 1 0.28 0.28 0.29 0.31 0.32 0.32 -0.037 0.049 0.031 -0.037 0.041 0.034 -0.036 0.043 0.037 -0.029 0.058 0.051 -0.062 -0.0081 0.022 -0.034 0.041 0.037 -0.041 0.041 0.027 -0.03 0.066 0.045 -0.031 0.059 0.042 -0.031 0.062 0.036
away_player_6 0.14 0.11 0.11 0.013 0.47 0.055 0.067 0.016 0.0064 0.011 0.028 0.039 -0.016 -0.004 0.082 0.088 -0.021 -0.14 0.06 0.029 -0.0032 0.03 0.038 -0.017 -0.012 0.063 0.076 0.0077 -0.13 0.024 0.05 0.0088 0.013 -0.0038 -0.0053 -0.0048 0.023 0.021 0.094 0.14 -0.027 0.029 -0.0019 nan -0.0033 -0.00019 0.0037 0.04 0.03 0.066 0.14 0.0038 -0.00049 0.22 0.29 0.27 0.26 0.26 0.27 0.27 0.28 0.29 0.28 0.28 0.26 0.31 0.3 0.28 0.28 1 0.29 0.3 0.31 0.31 0.3 -0.018 0.046 0.021 -0.017 0.037 0.025 -0.018 0.043 0.025 -0.0054 0.059 0.041 -0.035 -0.0018 0.012 -0.017 0.042 0.025 -0.045 0.037 0.027 -0.011 0.065 0.034 -0.061 0.061 0.064 -0.057 0.068 0.059
away_player_7 0.14 0.11 0.11 0.0064 0.44 0.054 0.078 0.025 0.0047 0.0084 0.024 0.039 -0.028 0.0087 0.089 0.091 -0.029 -0.15 0.068 0.026 -0.00099 0.0033 0.023 -0.037 0.021 0.13 0.068 -0.04 -0.16 0.069 0.017 0.0066 0.0098 -0.0036 -0.0021 -0.017 0.014 0.013 0.098 0.15 -0.034 0.036 -0.002 nan -0.00042 0.0011 -0.028 -0.017 0.032 0.11 0.15 -0.033 0.047 0.23 0.28 0.24 0.24 0.25 0.27 0.25 0.26 0.29 0.27 0.27 0.28 0.32 0.28 0.28 0.28 0.29 1 0.29 0.28 0.31 0.29 -0.017 0.066 0.035 -0.016 0.059 0.038 -0.014 0.061 0.039 -0.0076 0.076 0.058 -0.037 0.029 0.037 -0.016 0.06 0.037 -0.027 0.046 0.025 -0.0096 0.082 0.046 -0.027 0.052 0.034 -0.024 0.058 0.031
away_player_8 0.12 0.085 0.085 0.017 0.48 0.045 0.067 0.011 -0.00041 0.011 0.028 0.03 -0.021 0.0033 0.1 0.092 -0.038 -0.15 0.066 0.023 0.0012 0.043 0.053 -0.004 -0.026 0.12 0.13 -0.059 -0.16 0.076 -0.0057 0.011 0.0099 -0.0049 -0.0024 -0.012 0.0054 0.0069 0.11 0.15 -0.033 0.032 0.0051 nan -0.00063 -0.0024 0.02 -0.012 -0.024 0.13 0.15 -0.048 0.068 0.24 0.29 0.27 0.27 0.27 0.28 0.26 0.28 0.29 0.29 0.28 0.27 0.32 0.28 0.3 0.29 0.3 0.29 1 0.32 0.32 0.32 -0.029 0.056 0.035 -0.028 0.051 0.039 -0.029 0.056 0.039 -0.017 0.069 0.056 -0.045 0.016 0.033 -0.027 0.051 0.037 -0.051 0.045 0.031 -0.021 0.074 0.048 -0.05 0.045 0.039 -0.047 0.046 0.032
away_player_9 0.12 0.076 0.076 0.0048 0.49 0.052 0.087 0.013 -0.0039 0.015 0.025 0.047 -0.032 0.0063 0.094 0.095 -0.024 -0.16 0.06 0.039 0.0044 0.035 0.041 -0.017 -0.012 0.094 0.083 0.011 -0.16 0.019 0.067 0.015 0.013 -0.0041 -0.00033 -0.02 0.012 0.0091 0.094 0.16 -0.023 0.022 0.0048 nan 0.0036 0.005 0.00096 0.024 0.036 0.074 0.17 0.01 -0.0044 0.25 0.29 0.28 0.27 0.28 0.28 0.27 0.29 0.3 0.29 0.28 0.26 0.32 0.3 0.31 0.31 0.31 0.28 0.32 1 0.33 0.32 -0.033 0.054 0.03 -0.031 0.046 0.032 -0.029 0.054 0.034 -0.023 0.068 0.054 -0.065 0.0029 0.029 -0.031 0.048 0.034 -0.026 0.055 0.026 -0.026 0.074 0.045 -0.015 0.054 0.027 -0.016 0.059 0.024
away_player_10 0.14 0.1 0.1 0.011 0.47 0.063 0.083 0.026 -0.022 0.013 0.036 0.031 -0.041 0.014 0.093 0.094 -0.033 -0.16 0.065 0.03 -0.00076 0.028 0.035 -0.028 -0.0017 0.13 0.12 -0.082 -0.15 0.1 -0.038 0.012 0.012 -0.0046 -0.00036 -0.025 0.017 0.015 0.099 0.15 -0.032 0.032 -0.00076 nan nan 0.0035 -0.0045 -0.024 -0.03 0.14 0.13 -0.082 0.091 0.23 0.3 0.26 0.27 0.28 0.27 0.28 0.28 0.29 0.28 0.28 0.27 0.34 0.3 0.32 0.32 0.31 0.31 0.32 0.33 1 0.31 -0.071 0.054 0.053 -0.07 0.047 0.057 -0.069 0.049 0.056 -0.062 0.066 0.076 -0.1 0.018 0.058 -0.069 0.048 0.057 -0.08 0.046 0.052 -0.065 0.077 0.069 -0.09 0.056 0.069 -0.088 0.06 0.064
away_player_11 0.11 0.077 0.077 0.0049 0.45 0.06 0.09 0.024 -0.0074 0.0077 0.03 0.035 -0.023 -0.0068 0.081 0.074 0.014 -0.16 0.034 0.067 0.0098 0.019 0.024 -0.015 -0.0052 0.087 0.073 0.04 -0.18 0.01 0.11 0.0058 0.0092 -0.00058 -0.00092 -0.0043 0.033 0.037 0.066 0.16 0.0039 -0.0036 0.0021 nan 0.012 0.0085 -0.00035 0.037 0.055 0.054 0.2 0.038 -0.034 0.23 0.3 0.26 0.26 0.27 0.28 0.28 0.27 0.29 0.28 0.28 0.26 0.34 0.31 0.31 0.32 0.3 0.29 0.32 0.32 0.31 1 -0.058 0.047 0.041 -0.057 0.04 0.046 -0.056 0.043 0.045 -0.05 0.055 0.061 -0.083 0.00098 0.038 -0.057 0.044 0.041 -0.065 0.04 0.041 -0.051 0.064 0.053 -0.068 0.056 0.066 -0.067 0.06 0.055
B365H 0.064 0.06 0.06 0.0072 0.046 0.045 -0.032 -0.26 0.3 -0.0039 -0.021 -0.012 -0.016 0.00076 0.018 -0.03 -0.027 0.027 0.04 -0.051 -0.0021 0.026 0.013 0.001 0.012 -0.021 0.028 0.061 -0.074 -0.056 0.11 -0.0043 -0.003 -0.0022 -0.0072 -0.01 -0.018 0.016 0.017 -0.039 -0.056 0.039 -0.0041 nan -0.00095 -0.00023 -0.011 0.057 0.031 -0.022 0.095 0.08 -0.086 0.056 0.047 0.039 0.051 0.064 0.057 0.057 0.05 0.035 0.076 0.072 -0.068 -0.033 -0.02 -0.017 -0.037 -0.018 -0.017 -0.029 -0.033 -0.071 -0.058 1 0.018 -0.47 0.99 0.021 -0.48 0.98 0.0053 -0.5 0.99 0.015 -0.47 0.99 0.033 -0.43 0.99 0.012 -0.46 0.99 -0.022 -0.49 0.99 0.017 -0.44 0.99 -0.026 -0.52 0.99 -0.033 -0.51
B365D 0.1 0.093 0.093 0.031 0.11 -0.022 0.018 0.27 -0.074 0.0057 0.0046 -0.009 -0.028 0.028 0.013 0.029 0.035 -0.1 -0.0032 0.091 -0.0046 -0.02 -0.024 -0.044 0.018 0.039 -0.011 -0.02 -0.034 0.051 -0.0086 0.0045 0.0065 -0.0027 -0.00058 -0.024 0.047 0.042 0.025 0.12 0.035 -0.047 -0.0049 nan -0.0038 -0.0057 -0.025 -0.0084 0.032 0.042 0.024 -0.047 0.024 -0.024 0.0031 0.019 0.008 -0.0037 0.0098 0.028 0.0091 0.011 -0.025 -0.012 0.047 0.062 0.054 0.057 0.049 0.046 0.066 0.056 0.054 0.054 0.047 0.018 1 0.82 0.0016 0.97 0.81 -0.012 0.96 0.81 0.012 0.97 0.82 0.072 0.98 0.83 0.014 0.96 0.83 -0.016 0.97 0.83 0.039 0.98 0.84 -0.038 0.98 0.82 -0.033 0.98 0.83
B365A 0.036 0.034 0.034 0.0098 0.0084 -0.036 0.039 0.36 -0.23 0.0057 0.019 0.002 -0.0065 0.011 -0.0066 0.024 0.057 -0.084 -0.035 0.1 -0.003 -0.026 -0.025 -0.03 -0.0066 0.032 -0.043 -0.037 0.03 0.072 -0.073 0.0053 0.0058 -0.0019 0.0042 -0.0034 0.039 0.024 -0.017 0.1 0.064 -0.07 -0.0021 nan -0.003 -0.0044 -0.00099 -0.042 0.0089 0.02 -0.052 -0.087 0.062 -0.074 -0.058 -0.03 -0.043 -0.066 -0.046 -0.035 -0.044 -0.038 -0.09 -0.075 0.051 0.037 0.031 0.024 0.031 0.021 0.035 0.035 0.03 0.053 0.041 -0.47 0.82 1 -0.49 0.82 0.97 -0.5 0.82 0.97 -0.48 0.81 0.97 -0.43 0.83 0.98 -0.48 0.81 0.97 -0.49 0.82 0.98 -0.45 0.81 0.97 -0.52 0.82 0.98 -0.51 0.83 0.98
BWH 0.061 0.057 0.057 0.007 0.051 0.046 -0.033 -0.26 0.3 -0.0031 -0.02 -0.012 -0.017 -0.0027 0.027 -0.027 -0.032 0.024 0.046 -0.054 -0.0018 0.026 0.014 0.0046 0.0096 -0.016 0.034 0.058 -0.078 -0.055 0.11 -0.0037 -0.0022 -0.0017 -0.0071 -0.0073 -0.025 0.012 0.022 -0.038 -0.06 0.044 -0.004 nan -0.00067 -7.3e-05 -0.0077 0.053 0.025 -0.02 0.099 0.08 -0.084 0.061 0.049 0.041 0.052 0.065 0.059 0.057 0.053 0.036 0.078 0.074 -0.066 -0.032 -0.019 -0.017 -0.037 -0.017 -0.016 -0.028 -0.031 -0.07 -0.057 0.99 0.0016 -0.49 1 0.0033 -0.5 0.98 -0.011 -0.52 0.98 -0.00041 -0.48 0.98 0.018 -0.45 0.98 -0.0042 -0.48 0.99 -0.035 -0.5 0.98 0.0013 -0.45 0.99 -0.039 -0.54 0.99 -0.048 -0.52
BWD 0.11 0.096 0.096 0.04 0.099 -0.02 0.018 0.27 -0.072 0.0046 0.0078 -0.0092 -0.024 0.021 0.025 0.035 0.026 -0.1 0.0029 0.082 -0.0047 -0.018 -0.024 -0.043 0.011 0.053 -0.0056 -0.03 -0.034 0.057 -0.018 0.0038 0.0052 -0.0023 0.00042 -0.016 0.033 0.03 0.028 0.11 0.027 -0.038 -0.0043 nan -0.0042 -0.0057 -0.018 -0.024 0.021 0.049 0.022 -0.055 0.035 -0.026 -0.0058 0.01 0.0042 -0.012 0.00095 0.023 0.0047 0.0053 -0.032 -0.023 0.046 0.053 0.049 0.051 0.041 0.037 0.059 0.051 0.046 0.047 0.04 0.021 0.97 0.82 0.0033 1 0.81 -0.01 0.96 0.8 0.014 0.96 0.82 0.073 0.97 0.83 0.016 0.96 0.82 -0.01 0.97 0.82 0.04 0.97 0.84 -0.032 0.98 0.81 -0.027 0.97 0.82
BWA 0.041 0.038 0.038 0.012 0.014 -0.036 0.041 0.35 -0.23 0.0065 0.025 0.0063 -0.0018 0.0027 -0.00053 0.033 0.055 -0.087 -0.034 0.1 -0.0029 -0.021 -0.022 -0.031 -0.0098 0.041 -0.033 -0.042 0.025 0.073 -0.076 0.0061 0.0064 -0.0018 0.006 0.0056 0.035 0.016 -0.015 0.1 0.063 -0.066 -0.0018 nan -0.003 -0.0043 0.0025 -0.05 0.00055 0.026 -0.048 -0.088 0.067 -0.074 -0.057 -0.032 -0.041 -0.066 -0.045 -0.033 -0.043 -0.037 -0.088 -0.075 0.056 0.039 0.034 0.031 0.034 0.025 0.038 0.039 0.032 0.057 0.046 -0.48 0.81 0.97 -0.5 0.81 1 -0.51 0.81 0.97 -0.49 0.8 0.96 -0.44 0.81 0.98 -0.49 0.8 0.97 -0.51 0.8 0.97 -0.47 0.8 0.97 -0.54 0.81 0.98 -0.53 0.81 0.97
IWH 0.063 0.058 0.058 0.012 0.057 0.041 -0.033 -0.27 0.3 -0.0031 -0.019 -0.0097 -0.013 -0.0025 0.024 -0.025 -0.031 0.023 0.046 -0.054 -0.0022 0.028 0.014 0.0052 0.011 -0.016 0.037 0.057 -0.081 -0.053 0.11 -0.0036 -0.0023 -0.0022 -0.0076 -0.0076 -0.02 0.014 0.022 -0.036 -0.06 0.045 -0.0038 nan -0.0013 -0.00045 -0.0089 0.053 0.025 -0.016 0.1 0.078 -0.082 0.063 0.052 0.041 0.054 0.068 0.062 0.058 0.052 0.04 0.081 0.075 -0.065 -0.028 -0.016 -0.015 -0.036 -0.018 -0.014 -0.029 -0.029 -0.069 -0.056 0.98 -0.012 -0.5 0.98 -0.01 -0.51 1 -0.024 -0.53 0.98 -0.013 -0.5 0.97 0.0047 -0.46 0.98 -0.018 -0.49 0.98 -0.049 -0.51 0.97 -0.013 -0.46 0.99 -0.057 -0.55 0.98 -0.065 -0.54
IWD 0.096 0.082 0.082 0.05 0.12 -0.018 0.023 0.27 -0.083 0.0054 0.013 -0.0012 -0.02 0.013 0.029 0.044 0.023 -0.1 0.0047 0.074 -0.005 -0.014 -0.019 -0.036 0.0026 0.055 -0.001 -0.03 -0.034 0.06 -0.025 0.0043 0.0061 -0.0026 0.0011 -0.0074 0.027 0.018 0.028 0.11 0.024 -0.03 -0.005 nan -0.0043 -0.0057 -0.01 -0.026 0.015 0.046 0.02 -0.06 0.044 -0.026 -0.0019 0.013 0.0044 -0.0087 0.0056 0.02 0.01 0.011 -0.031 -0.024 0.048 0.06 0.047 0.048 0.043 0.043 0.061 0.056 0.054 0.049 0.043 0.0053 0.96 0.82 -0.011 0.96 0.81 -0.024 1 0.83 -0.00081 0.95 0.82 0.066 0.95 0.83 0.0022 0.95 0.83 -0.029 0.96 0.82 0.026 0.95 0.84 -0.059 0.96 0.82 -0.055 0.96 0.83
IWA 0.041 0.039 0.039 0.018 0.012 -0.038 0.036 0.36 -0.23 0.0071 0.02 0.0022 -0.0064 0.01 -2.4e-05 0.033 0.053 -0.092 -0.031 0.1 -0.0031 -0.024 -0.023 -0.026 -0.0084 0.038 -0.037 -0.038 0.022 0.073 -0.072 0.0063 0.0075 -0.002 0.0043 -0.0017 0.033 0.014 -0.015 0.11 0.063 -0.066 -0.0029 nan -0.0027 -0.0042 0.00078 -0.045 0.0062 0.022 -0.043 -0.087 0.067 -0.073 -0.052 -0.028 -0.04 -0.063 -0.047 -0.032 -0.043 -0.036 -0.088 -0.075 0.054 0.041 0.033 0.028 0.037 0.025 0.039 0.039 0.034 0.056 0.045 -0.5 0.81 0.97 -0.52 0.8 0.97 -0.53 0.83 1 -0.51 0.79 0.96 -0.46 0.81 0.97 -0.51 0.8 0.96 -0.52 0.8 0.96 -0.48 0.79 0.95 -0.55 0.81 0.97 -0.54 0.81 0.97
LBH 0.07 0.064 0.064 0.0073 0.072 0.048 -0.031 -0.26 0.29 -0.0023 -0.019 -0.01 -0.016 -0.002 0.022 -0.029 -0.03 0.025 0.045 -0.053 -0.0012 0.031 0.016 0.00015 0.01 -0.017 0.034 0.053 -0.074 -0.051 0.1 -0.0028 -0.0015 -0.002 -0.0071 -0.008 -0.017 0.018 0.023 -0.037 -0.06 0.043 -0.0031 nan -0.00017 0.0005 -0.0089 0.057 0.03 -0.012 0.095 0.074 -0.078 0.069 0.059 0.048 0.061 0.074 0.07 0.065 0.06 0.046 0.088 0.082 -0.06 -0.023 -0.012 -0.0072 -0.029 -0.0054 -0.0076 -0.017 -0.023 -0.062 -0.05 0.99 0.012 -0.48 0.98 0.014 -0.49 0.98 -0.00081 -0.51 1 0.013 -0.48 0.99 0.024 -0.44 0.98 0.0049 -0.47 0.98 -0.034 -0.5 0.98 0.012 -0.44 0.99 -0.041 -0.54 0.99 -0.046 -0.52
LBD 0.12 0.1 0.1 0.038 0.15 -0.022 0.016 0.26 -0.072 0.0065 0.012 -0.0021 -0.025 0.019 0.023 0.037 0.025 -0.11 0.0098 0.077 -0.0062 -0.014 -0.021 -0.045 0.011 0.051 -0.0079 -0.03 -0.033 0.059 -0.022 0.005 0.0077 -0.0021 -0.00054 -0.015 0.045 0.037 0.038 0.12 0.02 -0.03 -0.0062 nan -0.0054 -0.0067 -0.019 -0.016 0.027 0.052 0.02 -0.057 0.039 -0.013 0.016 0.028 0.017 0.007 0.022 0.038 0.022 0.027 -0.015 -0.0053 0.06 0.076 0.062 0.066 0.058 0.059 0.076 0.069 0.068 0.066 0.055 0.015 0.97 0.81 -0.00041 0.96 0.8 -0.013 0.95 0.79 0.013 1 0.82 0.069 0.98 0.82 0.013 0.95 0.82 -0.021 0.96 0.81 0.037 0.97 0.83 -0.046 0.96 0.8 -0.04 0.96 0.81
LBA 0.045 0.038 0.038 0.014 0.054 -0.034 0.046 0.35 -0.23 0.0069 0.027 0.012 -0.0049 0.0055 -7.2e-05 0.031 0.052 -0.089 -0.026 0.096 -0.0039 -0.023 -0.022 -0.034 -0.0071 0.04 -0.04 -0.037 0.023 0.072 -0.071 0.0059 0.0076 -0.0018 0.0045 0.0016 0.041 0.023 -0.0069 0.1 0.056 -0.06 -0.0035 nan -0.0035 -0.0048 -0.00084 -0.044 0.01 0.023 -0.044 -0.085 0.065 -0.061 -0.038 -0.013 -0.025 -0.046 -0.025 -0.015 -0.023 -0.018 -0.069 -0.058 0.072 0.062 0.049 0.044 0.051 0.041 0.058 0.056 0.054 0.076 0.061 -0.47 0.82 0.97 -0.48 0.82 0.96 -0.5 0.82 0.96 -0.48 0.82 1 -0.42 0.83 0.98 -0.47 0.81 0.96 -0.51 0.81 0.96 -0.45 0.82 0.96 -0.54 0.81 0.97 -0.53 0.81 0.98
PSH 0.079 0.079 0.079 0.0092 0.027 0.052 -0.04 -0.25 0.3 -0.0047 -0.026 -0.014 -0.018 0.0035 0.038 -0.038 -0.022 0.028 0.03 -0.037 -0.0047 0.037 0.014 0.0029 0.004 -0.049 0.0078 0.063 -0.061 -0.047 0.097 -0.0047 nan nan -0.0083 -0.014 -0.051 0.013 0.00087 -0.038 -0.047 0.034 -0.0047 nan nan 0.0014 -0.0061 0.078 0.044 -0.038 0.078 0.07 -0.088 0.065 0.026 0.027 0.045 0.055 0.041 0.045 0.04 0.019 0.071 0.07 -0.11 -0.057 -0.028 -0.034 -0.062 -0.035 -0.037 -0.045 -0.065 -0.1 -0.083 0.99 0.072 -0.43 0.98 0.073 -0.44 0.97 0.066 -0.46 0.99 0.069 -0.42 1 0.054 -0.41 0.99 0.067 -0.42 0.99 0.023 -0.45 0.99 0.065 -0.4 0.99 0.033 -0.5 0.99 0.0056 -0.49
PSD 0.12 0.12 0.12 0.031 0.028 -0.031 0.013 0.27 -0.074 -0.0022 0.011 -0.016 -0.026 0.025 0.008 0.0052 0.043 -0.11 0.0057 0.088 -0.0022 -0.029 -0.034 -0.049 0.03 0.05 -0.023 -0.02 -0.021 0.036 -0.0021 -0.0022 nan nan 0.0041 -0.023 0.039 0.049 -0.002 0.11 0.031 -0.052 -0.0022 nan nan -0.0063 -0.037 -0.048 0.016 0.016 0.008 -0.033 0.0097 -0.07 -0.049 -0.012 -0.035 -0.059 -0.037 -0.014 -0.029 -0.043 -0.073 -0.065 0.022 0.019 0.014 0.022 -0.0081 -0.0018 0.029 0.016 0.0029 0.018 0.00098 0.033 0.98 0.83 0.018 0.97 0.81 0.0047 0.95 0.81 0.024 0.98 0.83 0.054 1 0.83 0.025 0.97 0.84 -0.013 0.98 0.85 0.049 0.99 0.85 0.0018 0.97 0.8 -0.016 0.98 0.82
PSA 0.052 0.049 0.049 0.0038 0.014 -0.044 0.051 0.35 -0.23 0.0015 0.032 0.01 0.0041 -0.0093 -0.00014 0.024 0.041 -0.081 -0.014 0.078 0.0015 -0.033 -0.027 -0.031 -0.0033 0.075 -0.03 -0.044 0.031 0.05 -0.06 0.0015 nan nan 0.014 0.014 0.044 0.03 0.003 0.093 0.045 -0.055 0.0015 nan nan -0.005 -0.005 -0.089 -0.0064 0.027 -0.05 -0.064 0.054 -0.1 -0.071 -0.031 -0.053 -0.085 -0.054 -0.047 -0.045 -0.054 -0.1 -0.095 0.067 0.037 0.016 0.019 0.022 0.012 0.037 0.033 0.029 0.058 0.038 -0.43 0.83 0.98 -0.45 0.83 0.98 -0.46 0.83 0.97 -0.44 0.82 0.98 -0.41 0.83 1 -0.44 0.82 0.98 -0.46 0.84 0.98 -0.42 0.83 0.98 -0.49 0.82 0.98 -0.5 0.84 0.98
WHH 0.066 0.06 0.06 0.013 0.063 0.041 -0.032 -0.26 0.29 -0.0027 -0.018 -0.011 -0.016 -0.0033 0.025 -0.028 -0.034 0.029 0.047 -0.059 -0.0014 0.031 0.015 0.003 0.0079 -0.015 0.034 0.053 -0.075 -0.049 0.1 -0.0033 -0.0019 -0.0015 -0.0067 -0.0061 -0.023 0.013 0.023 -0.043 -0.064 0.048 -0.0033 nan -0.00034 0.00022 -0.006 0.053 0.026 -0.013 0.093 0.072 -0.076 0.058 0.049 0.038 0.053 0.066 0.059 0.057 0.053 0.036 0.08 0.071 -0.066 -0.031 -0.019 -0.014 -0.034 -0.017 -0.016 -0.027 -0.031 -0.069 -0.057 0.99 0.014 -0.48 0.98 0.016 -0.49 0.98 0.0022 -0.51 0.98 0.013 -0.47 0.99 0.025 -0.44 1 0.0038 -0.47 0.99 -0.025 -0.49 0.99 0.013 -0.44 0.99 -0.032 -0.53 0.99 -0.039 -0.51
WHD 0.11 0.1 0.1 0.032 0.076 -0.021 0.019 0.27 -0.072 0.0033 -0.0013 -0.012 -0.028 0.029 0.012 0.024 0.043 -0.1 -0.012 0.1 -0.0053 -0.025 -0.03 -0.046 0.021 0.039 -0.016 -0.013 -0.034 0.043 0.002 0.0025 0.004 -0.0029 -0.00029 -0.024 0.046 0.044 0.016 0.12 0.046 -0.058 -0.0053 nan -0.0047 -0.0056 -0.027 -0.012 0.032 0.033 0.026 -0.038 0.014 -0.029 -0.0058 0.017 0.0045 -0.013 0.0049 0.024 0.0047 0.0061 -0.035 -0.015 0.042 0.054 0.052 0.049 0.041 0.042 0.06 0.051 0.048 0.048 0.044 0.012 0.96 0.81 -0.0042 0.96 0.8 -0.018 0.95 0.8 0.0049 0.95 0.81 0.067 0.97 0.82 0.0038 1 0.82 -0.017 0.96 0.82 0.032 0.96 0.83 -0.04 0.96 0.8 -0.034 0.97 0.81
WHA 0.044 0.039 0.039 0.016 0.029 -0.035 0.033 0.35 -0.22 0.0075 0.022 0.0049 -0.0021 0.0057 0.003 0.032 0.049 -0.088 -0.026 0.095 -0.0033 -0.026 -0.026 -0.03 -0.0071 0.041 -0.038 -0.045 0.029 0.075 -0.078 0.007 0.0076 -0.0022 0.0045 0.0022 0.035 0.019 -0.0062 0.1 0.054 -0.058 -0.0023 nan -0.0033 -0.0046 -0.00099 -0.05 0.0046 0.028 -0.052 -0.09 0.069 -0.072 -0.053 -0.031 -0.042 -0.063 -0.046 -0.032 -0.041 -0.034 -0.085 -0.075 0.052 0.04 0.031 0.031 0.037 0.025 0.037 0.037 0.034 0.057 0.041 -0.46 0.83 0.97 -0.48 0.82 0.97 -0.49 0.83 0.96 -0.47 0.82 0.96 -0.42 0.84 0.98 -0.47 0.82 1 -0.49 0.83 0.97 -0.44 0.82 0.97 -0.52 0.82 0.97 -0.51 0.83 0.98
SJH 0.056 0.054 0.054 0.005 0.029 0.024 -0.017 -0.25 0.29 -0.0085 -0.02 -0.013 -0.016 0.00054 -7.8e-05 -0.033 -0.019 0.029 0.041 -0.049 -0.002 0.0051 0.0019 0.0041 0.021 -0.018 0.03 0.059 -0.069 -0.059 0.11 -0.0086 -0.0076 -0.0024 -0.0082 -0.0086 -0.0017 0.02 0.014 -0.039 -0.052 0.029 -0.0043 nan -0.00079 0.00018 -0.016 0.044 0.018 -0.023 0.091 0.082 -0.083 0.032 0.054 0.037 0.048 0.051 0.062 0.042 0.041 0.031 0.071 0.054 -0.054 -0.037 -0.044 -0.036 -0.041 -0.045 -0.027 -0.051 -0.026 -0.08 -0.065 0.99 -0.016 -0.49 0.99 -0.01 -0.51 0.98 -0.029 -0.52 0.98 -0.021 -0.51 0.99 -0.013 -0.46 0.99 -0.017 -0.49 1 -0.02 -0.49 0.99 -0.016 -0.46 0.99 -0.025 -0.52 0.99 -0.032 -0.51
SJD 0.098 0.09 0.09 0.031 0.088 -0.015 0.0075 0.27 -0.076 0.0035 -0.024 -0.025 -0.025 0.042 0.0069 0.04 0.021 -0.09 -0.0092 0.086 -0.0058 -0.036 -0.03 -0.032 0.024 0.029 0.0018 -0.03 -0.035 0.056 -0.02 0.0027 0.0043 -0.002 1.3e-05 -0.034 0.039 0.016 0.026 0.1 0.038 -0.047 -0.0057 nan -0.0051 -0.0072 -0.028 -0.0033 0.016 0.051 0.025 -0.054 0.031 -0.023 -0.0085 -0.0059 -0.014 -0.016 -0.01 0.0088 -0.0037 0.0028 -0.043 -0.026 0.034 0.042 0.051 0.039 0.041 0.037 0.046 0.045 0.055 0.046 0.04 -0.022 0.97 0.82 -0.035 0.97 0.8 -0.049 0.96 0.8 -0.034 0.96 0.81 0.023 0.98 0.84 -0.025 0.96 0.83 -0.02 1 0.83 -0.0045 0.96 0.84 -0.044 0.97 0.81 -0.04 0.97 0.82
SJA 0.033 0.032 0.032 0.012 -0.0076 -0.02 0.016 0.35 -0.22 0.0068 -0.00043 -0.0072 -0.0039 0.019 -0.0039 0.032 0.049 -0.081 -0.035 0.1 -0.0035 -0.022 -0.021 -0.018 -0.009 0.022 -0.033 -0.038 0.021 0.081 -0.079 0.0063 0.0068 -0.0024 0.0049 -0.0097 0.029 0.0047 -0.02 0.096 0.062 -0.065 -0.0026 nan -0.0035 -0.0052 0.0027 -0.028 0.0056 0.024 -0.044 -0.095 0.067 -0.062 -0.068 -0.052 -0.057 -0.067 -0.068 -0.043 -0.058 -0.041 -0.098 -0.078 0.027 0.023 0.043 0.029 0.027 0.027 0.025 0.031 0.026 0.052 0.041 -0.49 0.83 0.98 -0.5 0.82 0.97 -0.51 0.82 0.96 -0.5 0.81 0.96 -0.45 0.85 0.98 -0.49 0.82 0.97 -0.49 0.83 1 -0.47 0.82 0.97 -0.51 0.83 0.98 -0.5 0.83 0.98
VCH 0.075 0.069 0.069 0.0097 0.068 0.047 -0.03 -0.25 0.29 -0.0013 -0.016 -0.0097 -0.016 -0.0032 0.028 -0.023 -0.032 0.019 0.046 -0.052 -0.0017 0.03 0.016 0.0032 0.0064 -0.013 0.034 0.057 -0.079 -0.05 0.11 -0.002 -0.00033 -0.0018 -0.0066 -0.0066 -0.022 0.012 0.026 -0.032 -0.06 0.045 -0.0036 nan -0.00061 0.00011 -0.0052 0.054 0.029 -0.015 0.1 0.075 -0.08 0.065 0.053 0.046 0.058 0.07 0.065 0.063 0.057 0.042 0.084 0.08 -0.062 -0.025 -0.015 -0.0095 -0.03 -0.011 -0.0096 -0.021 -0.026 -0.065 -0.051 0.99 0.039 -0.45 0.98 0.04 -0.47 0.97 0.026 -0.48 0.98 0.037 -0.45 0.99 0.049 -0.42 0.99 0.032 -0.44 0.99 -0.0045 -0.47 1 0.038 -0.42 0.98 -0.006 -0.51 0.98 -0.013 -0.49
VCD 0.12 0.11 0.11 0.036 0.15 -0.019 0.019 0.27 -0.07 0.0059 0.0095 -0.0074 -0.029 0.023 0.032 0.043 0.027 -0.12 0.012 0.088 -0.004 -0.02 -0.023 -0.048 0.018 0.06 0.0044 -0.032 -0.052 0.062 -0.012 0.0051 0.0064 -0.0027 -0.00068 -0.02 0.038 0.035 0.037 0.13 0.023 -0.034 -0.0038 nan -0.0035 -0.0048 -0.025 -0.022 0.02 0.057 0.04 -0.056 0.037 -0.0092 0.02 0.039 0.025 0.013 0.028 0.045 0.028 0.031 -0.0081 0.0046 0.065 0.081 0.074 0.075 0.066 0.065 0.082 0.074 0.074 0.077 0.064 0.017 0.98 0.81 0.0013 0.97 0.8 -0.013 0.95 0.79 0.012 0.97 0.82 0.065 0.99 0.83 0.013 0.96 0.82 -0.016 0.96 0.82 0.038 1 0.84 -0.037 0.97 0.8 -0.032 0.97 0.81
VCA 0.056 0.05 0.05 0.017 0.045 -0.033 0.037 0.34 -0.22 0.0073 0.027 0.0052 -0.0034 0.0032 0.0033 0.033 0.056 -0.095 -0.027 0.1 -0.0028 -0.022 -0.02 -0.034 -0.0071 0.047 -0.029 -0.042 0.015 0.074 -0.07 0.0068 0.0074 -0.0017 0.0061 0.0038 0.038 0.023 -0.0097 0.11 0.058 -0.064 -0.0018 nan -0.0029 -0.0042 -0.00061 -0.05 0.0026 0.031 -0.037 -0.086 0.066 -0.066 -0.044 -0.02 -0.03 -0.053 -0.034 -0.023 -0.029 -0.026 -0.077 -0.061 0.064 0.051 0.041 0.04 0.045 0.034 0.046 0.048 0.045 0.069 0.053 -0.44 0.84 0.97 -0.45 0.84 0.97 -0.46 0.84 0.95 -0.44 0.83 0.96 -0.4 0.85 0.98 -0.44 0.83 0.97 -0.46 0.84 0.97 -0.42 0.84 1 -0.49 0.84 0.97 -0.49 0.84 0.97
GBH 0.051 0.05 0.05 0.0059 0.025 0.018 -0.012 -0.26 0.3 -0.0056 -0.019 -0.014 -0.014 -0.00022 0.0017 -0.029 -0.025 0.031 0.041 -0.057 -0.0021 0.004 0.0038 0.0047 0.02 -0.0083 0.041 0.056 -0.074 -0.065 0.12 -0.0062 -0.0045 -0.0023 -0.0046 -0.0065 -0.00091 0.017 0.021 -0.043 -0.054 0.038 -0.0048 nan -0.00059 -0.00059 -0.013 0.035 0.011 -0.021 0.099 0.089 -0.085 0.036 0.06 0.043 0.042 0.044 0.072 0.047 0.061 0.03 0.063 0.056 -0.056 -0.05 -0.053 -0.038 -0.031 -0.061 -0.027 -0.05 -0.015 -0.09 -0.068 0.99 -0.038 -0.52 0.99 -0.032 -0.54 0.99 -0.059 -0.55 0.99 -0.046 -0.54 0.99 0.0018 -0.49 0.99 -0.04 -0.52 0.99 -0.044 -0.51 0.98 -0.037 -0.49 1 -0.042 -0.54 0.99 -0.049 -0.52
GBD 0.095 0.088 0.088 0.033 0.11 -0.0087 0.0087 0.27 -0.069 0.0038 -0.0099 -0.012 -0.02 0.029 0.0044 0.049 0.018 -0.075 -0.019 0.078 -0.006 -0.031 -0.032 -0.031 0.013 0.027 -0.0039 -0.027 -0.028 0.058 -0.027 0.0032 0.0043 -0.0039 -0.0068 -0.02 0.04 0.01 0.03 0.088 0.039 -0.042 -0.0057 nan -0.0054 -0.0054 -0.015 0.0029 0.023 0.054 0.018 -0.058 0.036 -0.015 -0.0067 -0.0084 -0.019 -0.0046 -0.0018 0.023 -0.011 0.025 -0.048 -0.033 0.034 0.057 0.068 0.047 0.059 0.061 0.052 0.045 0.054 0.056 0.056 -0.026 0.98 0.82 -0.039 0.98 0.81 -0.057 0.96 0.81 -0.041 0.96 0.81 0.033 0.97 0.82 -0.032 0.96 0.82 -0.025 0.97 0.83 -0.006 0.97 0.84 -0.042 1 0.82 -0.038 0.98 0.83
GBA 0.025 0.023 0.023 0.012 0.016 -0.011 0.026 0.35 -0.23 0.0084 0.01 0.00092 -0.0013 0.012 -0.0024 0.041 0.051 -0.076 -0.045 0.1 -0.004 -0.017 -0.024 -0.019 -0.015 0.018 -0.038 -0.032 0.022 0.082 -0.087 0.0079 0.0082 -0.0027 -0.0036 -0.003 0.022 -0.0061 -0.027 0.092 0.068 -0.064 -0.0023 nan -0.0041 -0.0041 0.01 -0.023 0.0097 0.019 -0.047 -0.097 0.071 -0.055 -0.065 -0.049 -0.051 -0.051 -0.058 -0.029 -0.065 -0.019 -0.096 -0.078 0.036 0.05 0.068 0.044 0.042 0.064 0.034 0.039 0.027 0.069 0.066 -0.52 0.82 0.98 -0.54 0.81 0.98 -0.55 0.82 0.97 -0.54 0.8 0.97 -0.5 0.8 0.98 -0.53 0.8 0.97 -0.52 0.81 0.98 -0.51 0.8 0.97 -0.54 0.82 1 -0.53 0.82 0.98
BSH 0.049 0.048 0.048 0.0095 0.027 0.018 -0.012 -0.25 0.3 -0.0064 -0.019 -0.015 -0.014 0.00082 -0.0042 -0.034 -0.021 0.036 0.037 -0.055 -0.002 0.0032 0.0034 0.0037 0.02 -0.011 0.038 0.058 -0.071 -0.066 0.12 -0.0068 -0.0054 -0.0026 -0.0046 -0.007 0.0039 0.021 0.018 -0.047 -0.051 0.034 -0.0045 nan -0.0007 -0.0007 -0.014 0.038 0.014 -0.021 0.096 0.089 -0.086 0.03 0.06 0.039 0.04 0.042 0.071 0.047 0.057 0.033 0.063 0.054 -0.052 -0.051 -0.054 -0.038 -0.031 -0.057 -0.024 -0.047 -0.016 -0.088 -0.067 0.99 -0.033 -0.51 0.99 -0.027 -0.53 0.98 -0.055 -0.54 0.99 -0.04 -0.53 0.99 -0.016 -0.5 0.99 -0.034 -0.51 0.99 -0.04 -0.5 0.98 -0.032 -0.49 0.99 -0.038 -0.53 1 -0.044 -0.52
BSD 0.096 0.089 0.089 0.034 0.11 -0.0067 0.011 0.27 -0.073 0.0049 -0.012 -0.014 -0.022 0.031 -0.00098 0.043 0.026 -0.076 -0.023 0.086 -0.0061 -0.031 -0.029 -0.03 0.014 0.022 -0.008 -0.022 -0.026 0.056 -0.023 0.004 0.0056 -0.0026 -0.0056 -0.023 0.046 0.017 0.025 0.091 0.045 -0.048 -0.0056 nan -0.0055 -0.0055 -0.017 0.0063 0.026 0.048 0.018 -0.056 0.031 -0.015 -0.0032 -0.00082 -0.018 -0.00015 0.0071 0.027 -0.0091 0.028 -0.047 -0.028 0.036 0.061 0.073 0.047 0.062 0.068 0.058 0.046 0.059 0.06 0.06 -0.033 0.98 0.83 -0.048 0.97 0.81 -0.065 0.96 0.81 -0.046 0.96 0.81 0.0056 0.98 0.84 -0.039 0.97 0.83 -0.032 0.97 0.83 -0.013 0.97 0.84 -0.049 0.98 0.82 -0.044 1 0.83
BSA 0.024 0.022 0.022 0.013 0.013 -0.011 0.021 0.35 -0.22 0.0088 0.0076 -0.00077 -0.0042 0.016 -0.014 0.032 0.057 -0.07 -0.049 0.11 -0.0041 -0.017 -0.023 -0.02 -0.011 0.00056 -0.054 -0.023 0.031 0.082 -0.084 0.0081 0.0089 -0.0024 -0.0039 -0.0065 0.033 0.0037 -0.031 0.087 0.071 -0.069 -0.0029 nan -0.0041 -0.0041 0.0063 -0.009 0.023 0.011 -0.053 -0.097 0.067 -0.052 -0.065 -0.05 -0.054 -0.052 -0.058 -0.03 -0.063 -0.025 -0.097 -0.078 0.03 0.042 0.059 0.035 0.036 0.059 0.031 0.032 0.024 0.064 0.055 -0.51 0.83 0.98 -0.52 0.82 0.97 -0.54 0.83 0.97 -0.52 0.81 0.98 -0.49 0.82 0.98 -0.51 0.81 0.98 -0.51 0.82 0.98 -0.49 0.81 0.97 -0.52 0.83 0.98 -0.52 0.83 1
matches NULLs:
id                0
country_id        0
league_id         0
season            0
stage             0
              ...  
GBD           11817
GBA           11817
BSH           11818
BSD           11818
BSA           11818
Length: 115, dtype: int64
Found df matches with nulls.....






================================================== players ==================================================
players INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11060 entries, 0 to 11059
Data columns (total 7 columns):
id                    11060 non-null int64
player_api_id         11060 non-null int64
player_name           11060 non-null object
player_fifa_api_id    11060 non-null int64
birthday              11060 non-null object
height                11060 non-null float64
weight                11060 non-null int64
dtypes: float64(1), int64(4), object(2)
memory usage: 605.0+ KB
None
players Describtion:
count mean std min 25% 50% 75% max
id 11060.0 5537.511392 3197.692647 1.00 2767.75 5536.50 8306.25 11075.00
player_api_id 11060.0 156582.427215 160713.700624 2625.00 35555.50 96619.50 212470.50 750584.00
player_fifa_api_id 11060.0 165664.910488 58649.928360 2.00 151889.50 184671.00 203883.25 234141.00
height 11060.0 181.867445 6.369201 157.48 177.80 182.88 185.42 208.28
weight 11060.0 168.380289 14.990217 117.00 159.00 168.00 179.00 243.00
players Correlations:
Hover to magify
id player_api_id player_fifa_api_id height weight
id 1 -0.0065 -0.0024 0.0086 0.0047
player_api_id -0.0065 1 0.58 -0.054 -0.16
player_fifa_api_id -0.0024 0.58 1 -0.026 -0.11
height 0.0086 -0.054 -0.026 1 0.77
weight 0.0047 -0.16 -0.11 0.77 1
players NULLs:
id                    0
player_api_id         0
player_name           0
player_fifa_api_id    0
birthday              0
height                0
weight                0
dtype: int64





================================================== player_attributes ==================================================
player_attributes INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 183978 entries, 0 to 183977
Data columns (total 42 columns):
id                     183978 non-null int64
player_fifa_api_id     183978 non-null int64
player_api_id          183978 non-null int64
date                   183978 non-null object
overall_rating         183142 non-null float64
potential              183142 non-null float64
preferred_foot         183142 non-null object
attacking_work_rate    180748 non-null object
defensive_work_rate    183142 non-null object
crossing               183142 non-null float64
finishing              183142 non-null float64
heading_accuracy       183142 non-null float64
short_passing          183142 non-null float64
volleys                181265 non-null float64
dribbling              183142 non-null float64
curve                  181265 non-null float64
free_kick_accuracy     183142 non-null float64
long_passing           183142 non-null float64
ball_control           183142 non-null float64
acceleration           183142 non-null float64
sprint_speed           183142 non-null float64
agility                181265 non-null float64
reactions              183142 non-null float64
balance                181265 non-null float64
shot_power             183142 non-null float64
jumping                181265 non-null float64
stamina                183142 non-null float64
strength               183142 non-null float64
long_shots             183142 non-null float64
aggression             183142 non-null float64
interceptions          183142 non-null float64
positioning            183142 non-null float64
vision                 181265 non-null float64
penalties              183142 non-null float64
marking                183142 non-null float64
standing_tackle        183142 non-null float64
sliding_tackle         181265 non-null float64
gk_diving              183142 non-null float64
gk_handling            183142 non-null float64
gk_kicking             183142 non-null float64
gk_positioning         183142 non-null float64
gk_reflexes            183142 non-null float64
dtypes: float64(35), int64(3), object(4)
memory usage: 59.0+ MB
None
player_attributes Describtion:
count mean std min 25% 50% 75% max
id 183978.0 91989.500000 53110.018250 1.0 45995.25 91989.5 137983.75 183978.0
player_fifa_api_id 183978.0 165671.524291 53851.094769 2.0 155798.00 183488.0 199848.00 234141.0
player_api_id 183978.0 135900.617324 136927.840510 2625.0 34763.00 77741.0 191080.00 750584.0
overall_rating 183142.0 68.600015 7.041139 33.0 64.00 69.0 73.00 94.0
potential 183142.0 73.460353 6.592271 39.0 69.00 74.0 78.00 97.0
crossing 183142.0 55.086883 17.242135 1.0 45.00 59.0 68.00 95.0
finishing 183142.0 49.921078 19.038705 1.0 34.00 53.0 65.00 97.0
heading_accuracy 183142.0 57.266023 16.488905 1.0 49.00 60.0 68.00 98.0
short_passing 183142.0 62.429672 14.194068 3.0 57.00 65.0 72.00 97.0
volleys 181265.0 49.468436 18.256618 1.0 35.00 52.0 64.00 93.0
dribbling 183142.0 59.175154 17.744688 1.0 52.00 64.0 72.00 97.0
curve 181265.0 52.965675 18.255788 2.0 41.00 56.0 67.00 94.0
free_kick_accuracy 183142.0 49.380950 17.831746 1.0 36.00 50.0 63.00 97.0
long_passing 183142.0 57.069880 14.394464 3.0 49.00 59.0 67.00 97.0
ball_control 183142.0 63.388879 15.196671 5.0 58.00 67.0 73.00 97.0
acceleration 183142.0 67.659357 12.983326 10.0 61.00 69.0 77.00 97.0
sprint_speed 183142.0 68.051244 12.569721 12.0 62.00 69.0 77.00 97.0
agility 181265.0 65.970910 12.954585 11.0 58.00 68.0 75.00 96.0
reactions 183142.0 66.103706 9.155408 17.0 61.00 67.0 72.00 96.0
balance 181265.0 65.189496 13.063188 12.0 58.00 67.0 74.00 96.0
shot_power 183142.0 61.808427 16.135143 2.0 54.00 65.0 73.00 97.0
jumping 181265.0 66.969045 11.006734 14.0 60.00 68.0 74.00 96.0
stamina 183142.0 67.038544 13.165262 10.0 61.00 69.0 76.00 96.0
strength 183142.0 67.424529 12.072280 10.0 60.00 69.0 76.00 96.0
long_shots 183142.0 53.339431 18.367025 1.0 41.00 58.0 67.00 96.0
aggression 183142.0 60.948046 16.089521 6.0 51.00 64.0 73.00 97.0
interceptions 183142.0 52.009271 19.450133 1.0 34.00 57.0 68.00 96.0
positioning 183142.0 55.786504 18.448292 2.0 45.00 60.0 69.00 96.0
vision 181265.0 57.873550 15.144086 1.0 49.00 60.0 69.00 97.0
penalties 183142.0 55.003986 15.546519 2.0 45.00 57.0 67.00 96.0
marking 183142.0 46.772242 21.227667 1.0 25.00 50.0 66.00 96.0
standing_tackle 183142.0 50.351257 21.483706 1.0 29.00 56.0 69.00 95.0
sliding_tackle 181265.0 48.001462 21.598778 2.0 25.00 53.0 67.00 95.0
gk_diving 183142.0 14.704393 16.865467 1.0 7.00 10.0 13.00 94.0
gk_handling 183142.0 16.063612 15.867382 1.0 8.00 11.0 15.00 93.0
gk_kicking 183142.0 20.998362 21.452980 1.0 8.00 12.0 15.00 97.0
gk_positioning 183142.0 16.132154 16.099175 1.0 8.00 11.0 15.00 96.0
gk_reflexes 183142.0 16.441439 17.198155 1.0 8.00 11.0 15.00 96.0
player_attributes Correlations:
Hover to magify
id player_fifa_api_id player_api_id overall_rating potential crossing finishing heading_accuracy short_passing volleys dribbling curve free_kick_accuracy long_passing ball_control acceleration sprint_speed agility reactions balance shot_power jumping stamina strength long_shots aggression interceptions positioning vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
id 1 0.0034 0.002 -0.0029 0.0012 -0.019 -0.0079 -0.011 -0.0061 -0.0063 -0.014 -0.019 -0.0076 -0.0074 -0.013 -0.0076 -0.011 -0.00087 -0.0042 -0.0094 -0.0097 -0.0042 -0.0098 -0.0083 -0.01 -0.017 -0.0077 -0.015 -0.0077 -0.011 -0.0096 -0.012 -0.011 0.014 0.01 0.0086 0.014 0.014
player_fifa_api_id 0.0034 1 0.55 -0.27 -0.028 -0.064 -0.028 -0.1 -0.064 -0.088 0.05 -0.051 -0.11 -0.11 -0.023 0.18 0.18 0.12 -0.23 0.0077 -0.078 -0.073 0.012 -0.18 -0.067 -0.17 -0.18 -0.086 -0.16 -0.18 -0.078 -0.073 -0.054 -0.092 -0.14 -0.27 -0.15 -0.14
player_api_id 0.002 0.55 1 -0.32 0.011 -0.11 -0.06 -0.13 -0.087 -0.13 0.018 -0.098 -0.15 -0.14 -0.051 0.1 0.096 0.028 -0.31 0.021 -0.12 -0.14 -0.11 -0.23 -0.12 -0.21 -0.19 -0.11 -0.19 -0.16 -0.09 -0.087 -0.073 -0.071 -0.13 -0.24 -0.13 -0.12
overall_rating -0.0029 -0.27 -0.32 1 0.77 0.36 0.33 0.31 0.46 0.36 0.35 0.36 0.35 0.44 0.44 0.25 0.25 0.24 0.77 0.16 0.43 0.26 0.33 0.32 0.39 0.32 0.25 0.37 0.43 0.39 0.13 0.17 0.13 0.028 0.0044 0.026 0.0057 0.0057
potential 0.0012 -0.028 0.011 0.77 1 0.28 0.29 0.21 0.38 0.3 0.34 0.3 0.26 0.34 0.4 0.34 0.34 0.29 0.58 0.2 0.33 0.17 0.26 0.13 0.31 0.16 0.17 0.33 0.38 0.32 0.056 0.084 0.064 -0.011 0.0047 0.089 0.0034 0.004
crossing -0.019 -0.064 -0.11 0.36 0.28 1 0.58 0.37 0.79 0.64 0.81 0.79 0.71 0.68 0.81 0.6 0.58 0.6 0.38 0.52 0.66 0.021 0.56 -0.07 0.72 0.32 0.31 0.68 0.69 0.57 0.24 0.29 0.28 -0.6 -0.6 -0.35 -0.6 -0.6
finishing -0.0079 -0.028 -0.06 0.33 0.29 0.58 1 0.37 0.58 0.85 0.78 0.69 0.63 0.34 0.72 0.53 0.51 0.55 0.35 0.39 0.73 0.009 0.35 -0.053 0.81 0.044 -0.15 0.8 0.65 0.72 -0.28 -0.23 -0.26 -0.48 -0.47 -0.29 -0.47 -0.47
heading_accuracy -0.011 -0.1 -0.13 0.31 0.21 0.37 0.37 1 0.55 0.39 0.4 0.32 0.31 0.36 0.55 0.2 0.27 0.069 0.3 0.079 0.54 0.29 0.48 0.49 0.41 0.58 0.45 0.41 0.34 0.43 0.46 0.48 0.44 -0.67 -0.65 -0.39 -0.65 -0.65
short_passing -0.0061 -0.064 -0.087 0.46 0.38 0.79 0.58 0.55 1 0.64 0.79 0.73 0.69 0.8 0.89 0.5 0.49 0.51 0.46 0.46 0.72 0.06 0.61 0.092 0.73 0.45 0.42 0.68 0.77 0.61 0.35 0.42 0.38 -0.69 -0.69 -0.41 -0.69 -0.69
volleys -0.0063 -0.088 -0.13 0.36 0.3 0.64 0.85 0.39 0.64 1 0.78 0.75 0.68 0.41 0.75 0.51 0.49 0.56 0.4 0.42 0.75 0.023 0.38 -0.036 0.81 0.13 -0.038 0.78 0.69 0.71 -0.17 -0.11 -0.13 -0.51 -0.49 -0.28 -0.49 -0.49
dribbling -0.014 0.05 0.018 0.35 0.34 0.81 0.78 0.4 0.79 0.78 1 0.81 0.71 0.57 0.9 0.7 0.67 0.7 0.38 0.55 0.74 0.0086 0.53 -0.11 0.81 0.2 0.11 0.79 0.73 0.66 0.0041 0.067 0.046 -0.65 -0.65 -0.43 -0.65 -0.66
curve -0.019 -0.051 -0.098 0.36 0.3 0.79 0.69 0.32 0.73 0.75 0.81 1 0.8 0.59 0.8 0.55 0.52 0.62 0.39 0.49 0.69 -0.017 0.45 -0.11 0.78 0.2 0.14 0.72 0.73 0.65 0.034 0.095 0.081 -0.56 -0.55 -0.33 -0.55 -0.55
free_kick_accuracy -0.0076 -0.11 -0.15 0.35 0.26 0.71 0.63 0.31 0.69 0.68 0.71 0.8 1 0.6 0.72 0.43 0.39 0.5 0.37 0.43 0.68 -0.033 0.42 -0.056 0.77 0.23 0.18 0.65 0.7 0.67 0.075 0.13 0.11 -0.5 -0.49 -0.27 -0.49 -0.5
long_passing -0.0074 -0.11 -0.14 0.44 0.34 0.68 0.34 0.36 0.8 0.41 0.57 0.59 0.6 1 0.67 0.32 0.3 0.38 0.4 0.38 0.54 0.045 0.53 0.067 0.57 0.46 0.54 0.48 0.67 0.48 0.44 0.49 0.46 -0.46 -0.46 -0.25 -0.46 -0.46
ball_control -0.013 -0.023 -0.051 0.44 0.4 0.81 0.72 0.55 0.89 0.75 0.9 0.8 0.72 0.67 1 0.63 0.62 0.62 0.45 0.52 0.77 0.065 0.6 0.03 0.79 0.37 0.28 0.78 0.77 0.68 0.19 0.25 0.22 -0.74 -0.73 -0.46 -0.73 -0.74
acceleration -0.0076 0.18 0.1 0.25 0.34 0.6 0.53 0.2 0.5 0.51 0.7 0.55 0.43 0.32 0.63 1 0.9 0.77 0.27 0.62 0.48 0.16 0.52 -0.21 0.51 0.11 0.021 0.58 0.47 0.43 -0.033 -0.0049 0.0015 -0.48 -0.47 -0.28 -0.47 -0.47
sprint_speed -0.011 0.18 0.096 0.25 0.34 0.58 0.51 0.27 0.49 0.49 0.67 0.52 0.39 0.3 0.62 0.9 1 0.7 0.27 0.54 0.49 0.18 0.55 -0.11 0.49 0.15 0.053 0.57 0.44 0.41 0.0072 0.035 0.04 -0.5 -0.48 -0.28 -0.49 -0.49
agility -0.00087 0.12 0.028 0.24 0.29 0.6 0.55 0.069 0.51 0.56 0.7 0.62 0.5 0.38 0.62 0.77 0.7 1 0.3 0.68 0.46 0.13 0.43 -0.35 0.55 0.017 -0.043 0.59 0.56 0.44 -0.13 -0.09 -0.08 -0.39 -0.38 -0.24 -0.38 -0.38
reactions -0.0042 -0.23 -0.31 0.77 0.58 0.38 0.35 0.3 0.46 0.4 0.38 0.39 0.37 0.4 0.45 0.27 0.27 0.3 1 0.21 0.42 0.24 0.36 0.24 0.41 0.33 0.24 0.41 0.45 0.39 0.12 0.16 0.14 -0.075 -0.082 -0.037 -0.081 -0.081
balance -0.0094 0.0077 0.021 0.16 0.2 0.52 0.39 0.079 0.46 0.42 0.55 0.49 0.43 0.38 0.52 0.62 0.54 0.68 0.21 1 0.36 0.19 0.4 -0.32 0.44 0.11 0.091 0.5 0.51 0.39 0.037 0.065 0.076 -0.39 -0.36 -0.18 -0.36 -0.37
shot_power -0.0097 -0.078 -0.12 0.43 0.33 0.66 0.73 0.54 0.72 0.75 0.74 0.69 0.68 0.54 0.77 0.48 0.49 0.46 0.42 0.36 1 0.099 0.51 0.18 0.84 0.36 0.19 0.7 0.65 0.68 0.094 0.16 0.12 -0.58 -0.59 -0.39 -0.59 -0.59
jumping -0.0042 -0.073 -0.14 0.26 0.17 0.021 0.009 0.29 0.06 0.023 0.0086 -0.017 -0.033 0.045 0.065 0.16 0.18 0.13 0.24 0.19 0.099 1 0.25 0.26 0.013 0.28 0.2 0.059 0.017 0.058 0.19 0.19 0.2 -0.039 -0.038 -0.016 -0.037 -0.035
stamina -0.0098 0.012 -0.11 0.33 0.26 0.56 0.35 0.48 0.61 0.38 0.53 0.45 0.42 0.53 0.6 0.52 0.55 0.43 0.36 0.4 0.51 0.25 1 0.24 0.48 0.54 0.48 0.5 0.51 0.4 0.42 0.46 0.44 -0.55 -0.54 -0.31 -0.54 -0.55
strength -0.0083 -0.18 -0.23 0.32 0.13 -0.07 -0.053 0.49 0.092 -0.036 -0.11 -0.11 -0.056 0.067 0.03 -0.21 -0.11 -0.35 0.24 -0.32 0.18 0.26 0.24 1 0.0021 0.51 0.34 -0.023 -0.038 0.061 0.36 0.37 0.33 -0.071 -0.084 -0.059 -0.085 -0.084
long_shots -0.01 -0.067 -0.12 0.39 0.31 0.72 0.81 0.41 0.73 0.81 0.81 0.78 0.77 0.57 0.79 0.51 0.49 0.55 0.41 0.44 0.84 0.013 0.48 0.0021 1 0.24 0.11 0.77 0.73 0.71 -0.011 0.056 0.024 -0.55 -0.54 -0.33 -0.54 -0.55
aggression -0.017 -0.17 -0.21 0.32 0.16 0.32 0.044 0.58 0.45 0.13 0.2 0.2 0.23 0.46 0.37 0.11 0.15 0.017 0.33 0.11 0.36 0.28 0.54 0.51 0.24 1 0.66 0.2 0.28 0.22 0.65 0.68 0.65 -0.43 -0.43 -0.26 -0.43 -0.43
interceptions -0.0077 -0.18 -0.19 0.25 0.17 0.31 -0.15 0.45 0.42 -0.038 0.11 0.14 0.18 0.54 0.28 0.021 0.053 -0.043 0.24 0.091 0.19 0.2 0.48 0.34 0.11 0.66 1 0.054 0.23 0.085 0.83 0.84 0.82 -0.37 -0.33 -0.076 -0.33 -0.33
positioning -0.015 -0.086 -0.11 0.37 0.33 0.68 0.8 0.41 0.68 0.78 0.79 0.72 0.65 0.48 0.78 0.58 0.57 0.59 0.41 0.5 0.7 0.059 0.5 -0.023 0.77 0.2 0.054 1 0.74 0.75 -0.069 -0.0096 -0.041 -0.55 -0.5 -0.22 -0.51 -0.51
vision -0.0077 -0.16 -0.19 0.43 0.38 0.69 0.65 0.34 0.77 0.69 0.73 0.73 0.7 0.67 0.77 0.47 0.44 0.56 0.45 0.51 0.65 0.017 0.51 -0.038 0.73 0.28 0.23 0.74 1 0.67 0.081 0.15 0.12 -0.5 -0.46 -0.2 -0.46 -0.47
penalties -0.011 -0.18 -0.16 0.39 0.32 0.57 0.72 0.43 0.61 0.71 0.66 0.65 0.67 0.48 0.68 0.43 0.41 0.44 0.39 0.39 0.68 0.058 0.4 0.061 0.71 0.22 0.085 0.75 0.67 1 -0.038 0.0099 -0.029 -0.47 -0.43 -0.17 -0.43 -0.44
marking -0.0096 -0.078 -0.09 0.13 0.056 0.24 -0.28 0.46 0.35 -0.17 0.0041 0.034 0.075 0.44 0.19 -0.033 0.0072 -0.13 0.12 0.037 0.094 0.19 0.42 0.36 -0.011 0.65 0.83 -0.069 0.081 -0.038 1 0.95 0.94 -0.38 -0.38 -0.19 -0.37 -0.37
standing_tackle -0.012 -0.073 -0.087 0.17 0.084 0.29 -0.23 0.48 0.42 -0.11 0.067 0.095 0.13 0.49 0.25 -0.0049 0.035 -0.09 0.16 0.065 0.16 0.19 0.46 0.37 0.056 0.68 0.84 -0.0096 0.15 0.0099 0.95 1 0.95 -0.42 -0.42 -0.24 -0.41 -0.41
sliding_tackle -0.011 -0.054 -0.073 0.13 0.064 0.28 -0.26 0.44 0.38 -0.13 0.046 0.081 0.11 0.46 0.22 0.0015 0.04 -0.08 0.14 0.076 0.12 0.2 0.44 0.33 0.024 0.65 0.82 -0.041 0.12 -0.029 0.94 0.95 1 -0.4 -0.39 -0.21 -0.39 -0.39
gk_diving 0.014 -0.092 -0.071 0.028 -0.011 -0.6 -0.48 -0.67 -0.69 -0.51 -0.65 -0.56 -0.5 -0.46 -0.74 -0.48 -0.5 -0.39 -0.075 -0.39 -0.58 -0.039 -0.55 -0.071 -0.55 -0.43 -0.37 -0.55 -0.5 -0.47 -0.38 -0.42 -0.4 1 0.93 0.57 0.93 0.94
gk_handling 0.01 -0.14 -0.13 0.0044 0.0047 -0.6 -0.47 -0.65 -0.69 -0.49 -0.65 -0.55 -0.49 -0.46 -0.73 -0.47 -0.48 -0.38 -0.082 -0.36 -0.59 -0.038 -0.54 -0.084 -0.54 -0.43 -0.33 -0.5 -0.46 -0.43 -0.38 -0.42 -0.39 0.93 1 0.74 0.97 0.97
gk_kicking 0.0086 -0.27 -0.24 0.026 0.089 -0.35 -0.29 -0.39 -0.41 -0.28 -0.43 -0.33 -0.27 -0.25 -0.46 -0.28 -0.28 -0.24 -0.037 -0.18 -0.39 -0.016 -0.31 -0.059 -0.33 -0.26 -0.076 -0.22 -0.2 -0.17 -0.19 -0.24 -0.21 0.57 0.74 1 0.74 0.73
gk_positioning 0.014 -0.15 -0.13 0.0057 0.0034 -0.6 -0.47 -0.65 -0.69 -0.49 -0.65 -0.55 -0.49 -0.46 -0.73 -0.47 -0.49 -0.38 -0.081 -0.36 -0.59 -0.037 -0.54 -0.085 -0.54 -0.43 -0.33 -0.51 -0.46 -0.43 -0.37 -0.41 -0.39 0.93 0.97 0.74 1 0.97
gk_reflexes 0.014 -0.14 -0.12 0.0057 0.004 -0.6 -0.47 -0.65 -0.69 -0.49 -0.66 -0.55 -0.5 -0.46 -0.74 -0.47 -0.49 -0.38 -0.081 -0.37 -0.59 -0.035 -0.55 -0.084 -0.55 -0.43 -0.33 -0.51 -0.47 -0.44 -0.37 -0.41 -0.39 0.94 0.97 0.73 0.97 1
player_attributes NULLs:
id                        0
player_fifa_api_id        0
player_api_id             0
date                      0
overall_rating          836
potential               836
preferred_foot          836
attacking_work_rate    3230
defensive_work_rate     836
crossing                836
finishing               836
heading_accuracy        836
short_passing           836
volleys                2713
dribbling               836
curve                  2713
free_kick_accuracy      836
long_passing            836
ball_control            836
acceleration            836
sprint_speed            836
agility                2713
reactions               836
balance                2713
shot_power              836
jumping                2713
stamina                 836
strength                836
long_shots              836
aggression              836
interceptions           836
positioning             836
vision                 2713
penalties               836
marking                 836
standing_tackle         836
sliding_tackle         2713
gk_diving               836
gk_handling             836
gk_kicking              836
gk_positioning          836
gk_reflexes             836
dtype: int64
Found df player_attributes with nulls.....






================================================== teams ==================================================
teams INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 299 entries, 0 to 298
Data columns (total 5 columns):
id                  299 non-null int64
team_api_id         299 non-null int64
team_fifa_api_id    288 non-null float64
team_long_name      299 non-null object
team_short_name     299 non-null object
dtypes: float64(1), int64(2), object(2)
memory usage: 11.8+ KB
None
teams Describtion:
count mean std min 25% 50% 75% max
id 299.0 23735.301003 15167.914719 1.0 9552.50 22805.0 36250.50 51606.0
team_api_id 299.0 12340.521739 25940.411135 1601.0 8349.00 8655.0 9886.50 274581.0
team_fifa_api_id 288.0 21534.305556 42456.439408 1.0 178.75 673.5 1910.75 112513.0
teams Correlations:
Hover to magify
id team_api_id team_fifa_api_id
id 1 -0.0016 0.036
team_api_id -0.0016 1 0.22
team_fifa_api_id 0.036 0.22 1
teams NULLs:
id                   0
team_api_id          0
team_fifa_api_id    11
team_long_name       0
team_short_name      0
dtype: int64
Found df teams with nulls.....






================================================== team_attributes ==================================================
team_attributes INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1458 entries, 0 to 1457
Data columns (total 25 columns):
id                                1458 non-null int64
team_fifa_api_id                  1458 non-null int64
team_api_id                       1458 non-null int64
date                              1458 non-null object
buildUpPlaySpeed                  1458 non-null int64
buildUpPlaySpeedClass             1458 non-null object
buildUpPlayDribbling              489 non-null float64
buildUpPlayDribblingClass         1458 non-null object
buildUpPlayPassing                1458 non-null int64
buildUpPlayPassingClass           1458 non-null object
buildUpPlayPositioningClass       1458 non-null object
chanceCreationPassing             1458 non-null int64
chanceCreationPassingClass        1458 non-null object
chanceCreationCrossing            1458 non-null int64
chanceCreationCrossingClass       1458 non-null object
chanceCreationShooting            1458 non-null int64
chanceCreationShootingClass       1458 non-null object
chanceCreationPositioningClass    1458 non-null object
defencePressure                   1458 non-null int64
defencePressureClass              1458 non-null object
defenceAggression                 1458 non-null int64
defenceAggressionClass            1458 non-null object
defenceTeamWidth                  1458 non-null int64
defenceTeamWidthClass             1458 non-null object
defenceDefenderLineClass          1458 non-null object
dtypes: float64(1), int64(11), object(13)
memory usage: 284.9+ KB
None
team_attributes Describtion:
count mean std min 25% 50% 75% max
id 1458.0 729.500000 421.032659 1.0 365.25 729.5 1093.75 1458.0
team_fifa_api_id 1458.0 17706.982167 39179.857739 1.0 110.00 485.0 1900.00 112513.0
team_api_id 1458.0 9995.727023 13264.869900 1601.0 8457.75 8674.0 9904.00 274581.0
buildUpPlaySpeed 1458.0 52.462277 11.545869 20.0 45.00 52.0 62.00 80.0
buildUpPlayDribbling 489.0 48.607362 9.678290 24.0 42.00 49.0 55.00 77.0
buildUpPlayPassing 1458.0 48.490398 10.896101 20.0 40.00 50.0 55.00 80.0
chanceCreationPassing 1458.0 52.165295 10.360793 21.0 46.00 52.0 59.00 80.0
chanceCreationCrossing 1458.0 53.731824 11.086796 20.0 47.00 53.0 62.00 80.0
chanceCreationShooting 1458.0 53.969136 10.327566 22.0 48.00 53.0 61.00 80.0
defencePressure 1458.0 46.017147 10.227225 23.0 39.00 45.0 51.00 72.0
defenceAggression 1458.0 49.251029 9.738028 24.0 44.00 48.0 55.00 72.0
defenceTeamWidth 1458.0 52.185871 9.574712 29.0 47.00 52.0 58.00 73.0
team_attributes Correlations:
Hover to magify
id team_fifa_api_id team_api_id buildUpPlaySpeed buildUpPlayDribbling buildUpPlayPassing chanceCreationPassing chanceCreationCrossing chanceCreationShooting defencePressure defenceAggression defenceTeamWidth
id 1 -0.01 -0.09 -0.029 0.049 -0.019 0.018 0.02 -0.02 -0.013 -0.052 -0.048
team_fifa_api_id -0.01 1 0.16 -0.017 0.11 0.0077 -0.026 -0.11 0.003 -0.06 0.00052 -0.072
team_api_id -0.09 0.16 1 0.0043 0.039 0.0014 -0.0052 -0.066 -0.073 -0.065 -0.031 -0.071
buildUpPlaySpeed -0.029 -0.017 0.0043 1 0.068 0.4 0.32 0.19 0.072 0.046 0.16 0.067
buildUpPlayDribbling 0.049 0.11 0.039 0.068 1 -0.12 0.08 0.056 0.12 -0.018 -0.036 0.086
buildUpPlayPassing -0.019 0.0077 0.0014 0.4 -0.12 1 0.22 0.23 -0.077 -0.05 0.12 0.063
chanceCreationPassing 0.018 -0.026 -0.0052 0.32 0.08 0.22 1 0.25 0.11 0.2 0.15 0.15
chanceCreationCrossing 0.02 -0.11 -0.066 0.19 0.056 0.23 0.25 1 -0.013 0.087 0.099 0.13
chanceCreationShooting -0.02 0.003 -0.073 0.072 0.12 -0.077 0.11 -0.013 1 0.19 0.12 0.13
defencePressure -0.013 -0.06 -0.065 0.046 -0.018 -0.05 0.2 0.087 0.19 1 0.42 0.51
defenceAggression -0.052 0.00052 -0.031 0.16 -0.036 0.12 0.15 0.099 0.12 0.42 1 0.24
defenceTeamWidth -0.048 -0.072 -0.071 0.067 0.086 0.063 0.15 0.13 0.13 0.51 0.24 1
team_attributes NULLs:
id                                  0
team_fifa_api_id                    0
team_api_id                         0
date                                0
buildUpPlaySpeed                    0
buildUpPlaySpeedClass               0
buildUpPlayDribbling              969
buildUpPlayDribblingClass           0
buildUpPlayPassing                  0
buildUpPlayPassingClass             0
buildUpPlayPositioningClass         0
chanceCreationPassing               0
chanceCreationPassingClass          0
chanceCreationCrossing              0
chanceCreationCrossingClass         0
chanceCreationShooting              0
chanceCreationShootingClass         0
chanceCreationPositioningClass      0
defencePressure                     0
defencePressureClass                0
defenceAggression                   0
defenceAggressionClass              0
defenceTeamWidth                    0
defenceTeamWidthClass               0
defenceDefenderLineClass            0
dtype: int64
Found df team_attributes with nulls.....






================================================== sqlite_sequences ==================================================
sqlite_sequences INFO:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7 entries, 0 to 6
Data columns (total 2 columns):
name    7 non-null object
seq     7 non-null int64
dtypes: int64(1), object(1)
memory usage: 240.0+ bytes
None
sqlite_sequences Describtion:
count mean std min 25% 50% 75% max
seq 7.0 65185.857143 62082.942398 1458.0 31516.5 51958.0 77937.0 183978.0
sqlite_sequences Correlations:
Hover to magify
seq
seq 1
sqlite_sequences NULLs:
name    0
seq     0
dtype: int64





What are the tables that contains NULL values

In [13]:
dfs_with_nulls.keys()
Out[13]:
dict_keys(['matches', 'player_attributes', 'teams', 'team_attributes'])

Matches Dataframe

In [14]:
df = db.dfs['matches'].copy()
In [15]:
df.head(3)
Out[15]:
id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... SJA VCH VCD VCA GBH GBD GBA BSH BSD BSA
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 4.0 1.65 3.40 4.50 1.78 3.25 4.00 1.73 3.40 4.20
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.8 2.00 3.25 3.25 1.85 3.25 3.75 1.91 3.25 3.60
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 2.5 2.35 3.25 2.65 2.50 3.20 2.50 2.30 3.20 2.75

3 rows × 115 columns

In [16]:
df['league_id'].nunique()
Out[16]:
11
In [17]:
df.isnull().sum()
Out[17]:
id                0
country_id        0
league_id         0
season            0
stage             0
              ...  
GBD           11817
GBA           11817
BSH           11818
BSD           11818
BSA           11818
Length: 115, dtype: int64
In [18]:
# How many total missing values do we have?
total_cells = np.product(df.shape) 
total_missing = df.isnull().sum().sum()

# percent of data that is missing
percentage = (total_missing / total_cells) * 100
print(percentage)
13.63626474225838
If we dropped null values, there will be missing teams in the dataframes!
In [19]:
df.dropna()['league_id'].nunique()
Out[19]:
5
We will fill the missing values using the mean
In [20]:
df = df.fillna(df.mean())
In [21]:
db.dfs['matches'] = df

Player_Attributes Dataframe

In [22]:
df = db.dfs['player_attributes'].copy()
In [23]:
df.head(3)
Out[23]:
id player_fifa_api_id player_api_id date overall_rating potential preferred_foot attacking_work_rate defensive_work_rate crossing ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 1 218353 505942 2016-02-18 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 2 218353 505942 2015-11-19 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 3 218353 505942 2015-09-21 00:00:00 62.0 66.0 right medium medium 49.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0

3 rows × 42 columns

In [24]:
df.isnull().sum()
Out[24]:
id                        0
player_fifa_api_id        0
player_api_id             0
date                      0
overall_rating          836
potential               836
preferred_foot          836
attacking_work_rate    3230
defensive_work_rate     836
crossing                836
finishing               836
heading_accuracy        836
short_passing           836
volleys                2713
dribbling               836
curve                  2713
free_kick_accuracy      836
long_passing            836
ball_control            836
acceleration            836
sprint_speed            836
agility                2713
reactions               836
balance                2713
shot_power              836
jumping                2713
stamina                 836
strength                836
long_shots              836
aggression              836
interceptions           836
positioning             836
vision                 2713
penalties               836
marking                 836
standing_tackle         836
sliding_tackle         2713
gk_diving               836
gk_handling             836
gk_kicking              836
gk_positioning          836
gk_reflexes             836
dtype: int64
In [25]:
# How many total missing values do we have?
total_cells = np.product(df.shape) 
total_missing = df.isnull().sum().sum()

# percent of data that is missing
percentage = (total_missing / total_cells) * 100
print(percentage)
0.6121461727566805
If we dropped null values, there will be missing teams in the dataframes!
In [26]:
df.dropna()
Out[26]:
id player_fifa_api_id player_api_id date overall_rating potential preferred_foot attacking_work_rate defensive_work_rate crossing ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 1 218353 505942 2016-02-18 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 2 218353 505942 2015-11-19 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 3 218353 505942 2015-09-21 00:00:00 62.0 66.0 right medium medium 49.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0
3 4 218353 505942 2015-03-20 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
4 5 218353 505942 2007-02-22 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
183973 183974 102359 39902 2009-08-30 00:00:00 83.0 85.0 right medium low 84.0 ... 88.0 83.0 22.0 31.0 30.0 9.0 20.0 84.0 20.0 20.0
183974 183975 102359 39902 2009-02-22 00:00:00 78.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183975 183976 102359 39902 2008-08-30 00:00:00 77.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183976 183977 102359 39902 2007-08-30 00:00:00 78.0 81.0 right medium low 74.0 ... 88.0 53.0 28.0 32.0 30.0 9.0 20.0 73.0 20.0 20.0
183977 183978 102359 39902 2007-02-22 00:00:00 80.0 81.0 right medium low 74.0 ... 88.0 53.0 38.0 32.0 30.0 9.0 9.0 78.0 7.0 15.0

180354 rows × 42 columns

In [27]:
len(df), len(df.dropna()), 'Difference =>', len(df) - len(df.dropna())
Out[27]:
(183978, 180354, 'Difference =>', 3624)
We can drop the missing values but since there are multiple records for the same players, we will be use the filling method that fills the records with the values next to the record
In [28]:
df = df.fillna(method='bfill', axis=0).fillna(0)
In [29]:
db.dfs['player_attributes'] = df

Teams Dataframe

In [30]:
df = db.dfs['teams'].copy()
In [31]:
df.head(3)
Out[31]:
id team_api_id team_fifa_api_id team_long_name team_short_name
0 1 9987 673.0 KRC Genk GEN
1 2 9993 675.0 Beerschot AC BAC
2 3 10000 15005.0 SV Zulte-Waregem ZUL
In [32]:
df.isnull().sum()
Out[32]:
id                   0
team_api_id          0
team_fifa_api_id    11
team_long_name       0
team_short_name      0
dtype: int64
In [33]:
# How many total missing values do we have?
total_cells = np.product(df.shape) 
total_missing = df.isnull().sum().sum()

# percent of data that is missing
percentage = (total_missing / total_cells) * 100
print(percentage)
0.7357859531772575
In [34]:
df[df.isnull().any(axis=1)]
Out[34]:
id team_api_id team_fifa_api_id team_long_name team_short_name
8 9 7947 NaN FCV Dender EH DEN
14 15 4049 NaN Tubize TUB
170 26561 6601 NaN FC Volendam VOL
204 34816 177361 NaN Termalica Bruk-Bet Nieciecza TBN
208 35286 7992 NaN Trofense TRO
213 35291 10213 NaN Amadora AMA
223 36248 9765 NaN Portimonense POR
225 36723 4064 NaN Feirense FEI
232 38789 6367 NaN Uniao da Madeira MAD
233 38791 188163 NaN Tondela TON
298 51606 7896 NaN Lugano LUG
We might not need the _team_fifa_apiid hence we are going to drop the column of this data
In [35]:
df = df.drop(columns=['team_fifa_api_id'])
In [36]:
db.dfs['teams'] = df

Team_Attributes Dataframe

In [37]:
df = db.dfs['team_attributes'].copy()
In [38]:
df.head(3)
Out[38]:
id team_fifa_api_id team_api_id date buildUpPlaySpeed buildUpPlaySpeedClass buildUpPlayDribbling buildUpPlayDribblingClass buildUpPlayPassing buildUpPlayPassingClass ... chanceCreationShooting chanceCreationShootingClass chanceCreationPositioningClass defencePressure defencePressureClass defenceAggression defenceAggressionClass defenceTeamWidth defenceTeamWidthClass defenceDefenderLineClass
0 1 434 9930 2010-02-22 00:00:00 60 Balanced NaN Little 50 Mixed ... 55 Normal Organised 50 Medium 55 Press 45 Normal Cover
1 2 434 9930 2014-09-19 00:00:00 52 Balanced 48.0 Normal 56 Mixed ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover
2 3 434 9930 2015-09-10 00:00:00 47 Balanced 41.0 Normal 54 Mixed ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover

3 rows × 25 columns

In [39]:
df.isnull().sum()
Out[39]:
id                                  0
team_fifa_api_id                    0
team_api_id                         0
date                                0
buildUpPlaySpeed                    0
buildUpPlaySpeedClass               0
buildUpPlayDribbling              969
buildUpPlayDribblingClass           0
buildUpPlayPassing                  0
buildUpPlayPassingClass             0
buildUpPlayPositioningClass         0
chanceCreationPassing               0
chanceCreationPassingClass          0
chanceCreationCrossing              0
chanceCreationCrossingClass         0
chanceCreationShooting              0
chanceCreationShootingClass         0
chanceCreationPositioningClass      0
defencePressure                     0
defencePressureClass                0
defenceAggression                   0
defenceAggressionClass              0
defenceTeamWidth                    0
defenceTeamWidthClass               0
defenceDefenderLineClass            0
dtype: int64
In [40]:
# How many total missing values do we have?
total_cells = np.product(df.shape) 
total_missing = df.isnull().sum().sum()

# percent of data that is missing
percentage = (total_missing / total_cells) * 100
print(percentage)
2.6584362139917697
In [41]:
df[df.isnull().any(axis=1)]
Out[41]:
id team_fifa_api_id team_api_id date buildUpPlaySpeed buildUpPlaySpeedClass buildUpPlayDribbling buildUpPlayDribblingClass buildUpPlayPassing buildUpPlayPassingClass ... chanceCreationShooting chanceCreationShootingClass chanceCreationPositioningClass defencePressure defencePressureClass defenceAggression defenceAggressionClass defenceTeamWidth defenceTeamWidthClass defenceDefenderLineClass
0 1 434 9930 2010-02-22 00:00:00 60 Balanced NaN Little 50 Mixed ... 55 Normal Organised 50 Medium 55 Press 45 Normal Cover
3 4 77 8485 2010-02-22 00:00:00 70 Fast NaN Little 70 Long ... 70 Lots Organised 60 Medium 70 Double 70 Wide Cover
4 5 77 8485 2011-02-22 00:00:00 47 Balanced NaN Little 52 Mixed ... 52 Normal Organised 47 Medium 47 Press 52 Normal Cover
5 6 77 8485 2012-02-22 00:00:00 58 Balanced NaN Little 62 Mixed ... 55 Normal Organised 40 Medium 40 Press 60 Normal Cover
6 7 77 8485 2013-09-20 00:00:00 62 Balanced NaN Little 45 Mixed ... 55 Normal Organised 42 Medium 42 Press 60 Normal Cover
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1447 1448 244 8394 2013-09-20 00:00:00 38 Balanced NaN Little 23 Short ... 57 Normal Organised 51 Medium 46 Press 61 Normal Cover
1452 1453 15005 10000 2010-02-22 00:00:00 65 Balanced NaN Little 60 Mixed ... 50 Normal Organised 70 High 60 Press 70 Wide Cover
1453 1454 15005 10000 2011-02-22 00:00:00 52 Balanced NaN Little 52 Mixed ... 53 Normal Organised 46 Medium 48 Press 53 Normal Cover
1454 1455 15005 10000 2012-02-22 00:00:00 54 Balanced NaN Little 51 Mixed ... 50 Normal Organised 44 Medium 55 Press 53 Normal Cover
1455 1456 15005 10000 2013-09-20 00:00:00 54 Balanced NaN Little 51 Mixed ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover

969 rows × 25 columns

We might not need the buildUpPlayDribbling hence we are going to drop the column of this data
In [42]:
df = df.drop(columns=['buildUpPlayDribbling'])
In [43]:
db.dfs['team_attributes'] = df





Display Cleaned Data 🎉 🧼

In [44]:
display_tables(db.dfs)
Out[44]:

'countries'

id name
0 1 Belgium
1 1729 England
2 4769 France
3 7809 Germany
4 10257 Italy
5 13274 Netherlands
6 15722 Poland
7 17642 Portugal
8 19694 Scotland
9 21518 Spain
10 24558 Switzerland

'leagues'

id country_id name
0 1 1 Belgium Jupiler League
1 1729 1729 England Premier League
2 4769 4769 France Ligue 1
3 7809 7809 Germany 1. Bundesliga
4 10257 10257 Italy Serie A
5 13274 13274 Netherlands Eredivisie
6 15722 15722 Poland Ekstraklasa
7 17642 17642 Portugal Liga ZON Sagres
8 19694 19694 Scotland Premier League
9 21518 21518 Spain LIGA BBVA
10 24558 24558 Switzerland Super League

'matches'

id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... SJA VCH VCD VCA GBH GBD GBA BSH BSD BSA
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 4.000000 1.650000 3.400000 4.500000 1.780000 3.250000 4.000000 1.730000 3.400000 4.200000
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.800000 2.000000 3.250000 3.250000 1.850000 3.250000 3.750000 1.910000 3.250000 3.600000
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 2.500000 2.350000 3.250000 2.650000 2.500000 3.200000 2.500000 2.300000 3.200000 2.750000
3 4 1 1 2008/2009 1 2008-08-17 00:00:00 492476 9991 9998 5 ... 7.500000 1.450000 3.750000 6.500000 1.500000 3.750000 5.500000 1.440000 3.750000 6.500000
4 5 1 1 2008/2009 1 2008-08-16 00:00:00 492477 7947 9985 1 ... 1.730000 4.500000 3.400000 1.650000 4.500000 3.500000 1.650000 4.750000 3.300000 1.670000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
25974 25975 24558 24558 2015/2016 9 2015-09-22 00:00:00 1992091 10190 10191 1 ... 4.622343 2.668107 3.899048 4.840281 2.498764 3.648189 4.353097 2.497894 3.660742 4.405663
25975 25976 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992092 9824 10199 1 ... 4.622343 2.668107 3.899048 4.840281 2.498764 3.648189 4.353097 2.497894 3.660742 4.405663
25976 25977 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992093 9956 10179 2 ... 4.622343 2.668107 3.899048 4.840281 2.498764 3.648189 4.353097 2.497894 3.660742 4.405663
25977 25978 24558 24558 2015/2016 9 2015-09-22 00:00:00 1992094 7896 10243 0 ... 4.622343 2.668107 3.899048 4.840281 2.498764 3.648189 4.353097 2.497894 3.660742 4.405663
25978 25979 24558 24558 2015/2016 9 2015-09-23 00:00:00 1992095 10192 9931 4 ... 4.622343 2.668107 3.899048 4.840281 2.498764 3.648189 4.353097 2.497894 3.660742 4.405663

25979 rows × 115 columns

'players'

id player_api_id player_name player_fifa_api_id birthday height weight
0 1 505942 Aaron Appindangoye 218353 1992-02-29 00:00:00 182.88 187
1 2 155782 Aaron Cresswell 189615 1989-12-15 00:00:00 170.18 146
2 3 162549 Aaron Doran 186170 1991-05-13 00:00:00 170.18 163
3 4 30572 Aaron Galindo 140161 1982-05-08 00:00:00 182.88 198
4 5 23780 Aaron Hughes 17725 1979-11-08 00:00:00 182.88 154
... ... ... ... ... ... ... ...
11055 11071 26357 Zoumana Camara 2488 1979-04-03 00:00:00 182.88 168
11056 11072 111182 Zsolt Laczko 164680 1986-12-18 00:00:00 182.88 176
11057 11073 36491 Zsolt Low 111191 1979-04-29 00:00:00 180.34 154
11058 11074 35506 Zurab Khizanishvili 47058 1981-10-06 00:00:00 185.42 172
11059 11075 39902 Zvjezdan Misimovic 102359 1982-06-05 00:00:00 180.34 176

11060 rows × 7 columns

'player_attributes'

id player_fifa_api_id player_api_id date overall_rating potential preferred_foot attacking_work_rate defensive_work_rate crossing ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 1 218353 505942 2016-02-18 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 2 218353 505942 2015-11-19 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 3 218353 505942 2015-09-21 00:00:00 62.0 66.0 right medium medium 49.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0
3 4 218353 505942 2015-03-20 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
4 5 218353 505942 2007-02-22 00:00:00 61.0 65.0 right medium medium 48.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
183973 183974 102359 39902 2009-08-30 00:00:00 83.0 85.0 right medium low 84.0 ... 88.0 83.0 22.0 31.0 30.0 9.0 20.0 84.0 20.0 20.0
183974 183975 102359 39902 2009-02-22 00:00:00 78.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183975 183976 102359 39902 2008-08-30 00:00:00 77.0 80.0 right medium low 74.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183976 183977 102359 39902 2007-08-30 00:00:00 78.0 81.0 right medium low 74.0 ... 88.0 53.0 28.0 32.0 30.0 9.0 20.0 73.0 20.0 20.0
183977 183978 102359 39902 2007-02-22 00:00:00 80.0 81.0 right medium low 74.0 ... 88.0 53.0 38.0 32.0 30.0 9.0 9.0 78.0 7.0 15.0

183978 rows × 42 columns

'teams'

id team_api_id team_long_name team_short_name
0 1 9987 KRC Genk GEN
1 2 9993 Beerschot AC BAC
2 3 10000 SV Zulte-Waregem ZUL
3 4 9994 Sporting Lokeren LOK
4 5 9984 KSV Cercle Brugge CEB
... ... ... ... ...
294 49479 10190 FC St. Gallen GAL
295 49837 10191 FC Thun THU
296 50201 9777 Servette FC SER
297 50204 7730 FC Lausanne-Sports LAU
298 51606 7896 Lugano LUG

299 rows × 4 columns

'team_attributes'

id team_fifa_api_id team_api_id date buildUpPlaySpeed buildUpPlaySpeedClass buildUpPlayDribblingClass buildUpPlayPassing buildUpPlayPassingClass buildUpPlayPositioningClass ... chanceCreationShooting chanceCreationShootingClass chanceCreationPositioningClass defencePressure defencePressureClass defenceAggression defenceAggressionClass defenceTeamWidth defenceTeamWidthClass defenceDefenderLineClass
0 1 434 9930 2010-02-22 00:00:00 60 Balanced Little 50 Mixed Organised ... 55 Normal Organised 50 Medium 55 Press 45 Normal Cover
1 2 434 9930 2014-09-19 00:00:00 52 Balanced Normal 56 Mixed Organised ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover
2 3 434 9930 2015-09-10 00:00:00 47 Balanced Normal 54 Mixed Organised ... 64 Normal Organised 47 Medium 44 Press 54 Normal Cover
3 4 77 8485 2010-02-22 00:00:00 70 Fast Little 70 Long Organised ... 70 Lots Organised 60 Medium 70 Double 70 Wide Cover
4 5 77 8485 2011-02-22 00:00:00 47 Balanced Little 52 Mixed Organised ... 52 Normal Organised 47 Medium 47 Press 52 Normal Cover
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1453 1454 15005 10000 2011-02-22 00:00:00 52 Balanced Little 52 Mixed Organised ... 53 Normal Organised 46 Medium 48 Press 53 Normal Cover
1454 1455 15005 10000 2012-02-22 00:00:00 54 Balanced Little 51 Mixed Organised ... 50 Normal Organised 44 Medium 55 Press 53 Normal Cover
1455 1456 15005 10000 2013-09-20 00:00:00 54 Balanced Little 51 Mixed Organised ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover
1456 1457 15005 10000 2014-09-19 00:00:00 54 Balanced Normal 51 Mixed Organised ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover
1457 1458 15005 10000 2015-09-10 00:00:00 54 Balanced Normal 51 Mixed Organised ... 32 Little Organised 44 Medium 58 Press 37 Normal Cover

1458 rows × 24 columns

'sqlite_sequences'

name seq
0 Team 103916
1 Country 51958
2 League 51958
3 Match 51958
4 Player 11075
5 Player_Attributes 183978
6 Team_Attributes 1458





Some Data Modification & Enhancements 🔝

Player Dataframe:

  • Removing unnessecary time from the birth day
  • Adding new Column {Age} to the player df
In [45]:
df = db.dfs['players'].copy()
df.head(3)
Out[45]:
id player_api_id player_name player_fifa_api_id birthday height weight
0 1 505942 Aaron Appindangoye 218353 1992-02-29 00:00:00 182.88 187
1 2 155782 Aaron Cresswell 189615 1989-12-15 00:00:00 170.18 146
2 3 162549 Aaron Doran 186170 1991-05-13 00:00:00 170.18 163
In [46]:
df['birthday'] =  pd.to_datetime(df['birthday'])
df.head(3)
Out[46]:
id player_api_id player_name player_fifa_api_id birthday height weight
0 1 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187
1 2 155782 Aaron Cresswell 189615 1989-12-15 170.18 146
2 3 162549 Aaron Doran 186170 1991-05-13 170.18 163
In [47]:
now = pd.Timestamp('now')
df['age'] = (now - df['birthday']).astype('<m8[Y]').apply(int)
df.head(3)
Out[47]:
id player_api_id player_name player_fifa_api_id birthday height weight age
0 1 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27
1 2 155782 Aaron Cresswell 189615 1989-12-15 170.18 146 29
2 3 162549 Aaron Doran 186170 1991-05-13 170.18 163 28
In [48]:
db.dfs['players'] = df



Player_Attributes Dataframe

In [49]:
df = db.dfs['player_attributes'].copy()
df.head(3)
Out[49]:
id player_fifa_api_id player_api_id date overall_rating potential preferred_foot attacking_work_rate defensive_work_rate crossing ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 1 218353 505942 2016-02-18 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 2 218353 505942 2015-11-19 00:00:00 67.0 71.0 right medium medium 49.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 3 218353 505942 2015-09-21 00:00:00 62.0 66.0 right medium medium 49.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0

3 rows × 42 columns

In [50]:
players_and_attr = (db.dfs['players']
                    .merge(df, on="player_api_id", how='outer')
                   .rename(columns={'player_fifa_api_id_x':"player_fifa_api_id"}))

players_and_attr = players_and_attr.drop(["id_x", "id_y", "player_fifa_api_id_y"], axis = 1)
df = db.dfs['players_and_attr'] = players_and_attr
In [51]:
df
Out[51]:
player_api_id player_name player_fifa_api_id birthday height weight age date overall_rating potential ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
0 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27 2016-02-18 00:00:00 67.0 71.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
1 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27 2015-11-19 00:00:00 67.0 71.0 ... 54.0 48.0 65.0 69.0 69.0 6.0 11.0 10.0 8.0 8.0
2 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27 2015-09-21 00:00:00 62.0 66.0 ... 54.0 48.0 65.0 66.0 69.0 6.0 11.0 10.0 8.0 8.0
3 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27 2015-03-20 00:00:00 61.0 65.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
4 505942 Aaron Appindangoye 218353 1992-02-29 182.88 187 27 2007-02-22 00:00:00 61.0 65.0 ... 53.0 47.0 62.0 63.0 66.0 5.0 10.0 9.0 7.0 7.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
183973 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2009-08-30 00:00:00 83.0 85.0 ... 88.0 83.0 22.0 31.0 30.0 9.0 20.0 84.0 20.0 20.0
183974 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2009-02-22 00:00:00 78.0 80.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183975 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2008-08-30 00:00:00 77.0 80.0 ... 88.0 70.0 32.0 31.0 30.0 9.0 20.0 73.0 20.0 20.0
183976 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2007-08-30 00:00:00 78.0 81.0 ... 88.0 53.0 28.0 32.0 30.0 9.0 20.0 73.0 20.0 20.0
183977 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2007-02-22 00:00:00 80.0 81.0 ... 88.0 53.0 38.0 32.0 30.0 9.0 9.0 78.0 7.0 15.0

183978 rows × 46 columns

We can observe that multiple record for the same player are stored over the years!

In [52]:
df.groupby('player_name').count()
Out[52]:
player_api_id player_fifa_api_id birthday height weight age date overall_rating potential preferred_foot ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
player_name
Aaron Appindangoye 5 5 5 5 5 5 5 5 5 5 ... 5 5 5 5 5 5 5 5 5 5
Aaron Cresswell 33 33 33 33 33 33 33 33 33 33 ... 33 33 33 33 33 33 33 33 33 33
Aaron Doran 26 26 26 26 26 26 26 26 26 26 ... 26 26 26 26 26 26 26 26 26 26
Aaron Galindo 23 23 23 23 23 23 23 23 23 23 ... 23 23 23 23 23 23 23 23 23 23
Aaron Hughes 25 25 25 25 25 25 25 25 25 25 ... 25 25 25 25 25 25 25 25 25 25
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Zsolt Low 7 7 7 7 7 7 7 7 7 7 ... 7 7 7 7 7 7 7 7 7 7
Zurab Khizanishvili 8 8 8 8 8 8 8 8 8 8 ... 8 8 8 8 8 8 8 8 8 8
Zvjezdan Misimovic 10 10 10 10 10 10 10 10 10 10 ... 10 10 10 10 10 10 10 10 10 10
de Oliveira Cleber Monteiro 9 9 9 9 9 9 9 9 9 9 ... 9 9 9 9 9 9 9 9 9 9
dos Santos Fabio Junior 4 4 4 4 4 4 4 4 4 4 ... 4 4 4 4 4 4 4 4 4 4

10848 rows × 45 columns

In [53]:
df.sort_values("date", inplace=True, ascending=False) 
In [54]:
df
Out[54]:
player_api_id player_name player_fifa_api_id birthday height weight age date overall_rating potential ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
95620 307224 Kevin Koubemba 208127 1993-03-23 193.04 198 26 2016-07-07 00:00:00 64.0 68.0 ... 55.0 65.0 22.0 22.0 25.0 12.0 12.0 7.0 11.0 12.0
57229 184521 Florian Lejeune 197948 1991-05-20 187.96 179 28 2016-07-07 00:00:00 73.0 77.0 ... 32.0 43.0 74.0 75.0 69.0 11.0 15.0 15.0 12.0 7.0
181048 512726 Yanis Mbombo Lokwa 221274 1994-04-08 177.80 172 25 2016-07-07 00:00:00 63.0 72.0 ... 48.0 59.0 15.0 16.0 12.0 11.0 12.0 12.0 12.0 7.0
178639 450002 Wallace 216437 1993-10-14 190.50 183 26 2016-07-07 00:00:00 74.0 82.0 ... 31.0 45.0 76.0 78.0 74.0 15.0 11.0 11.0 10.0 11.0
153508 45400 Ronnie Schwartz 172555 1989-08-29 182.88 176 30 2016-07-07 00:00:00 68.0 70.0 ... 45.0 66.0 23.0 17.0 23.0 13.0 11.0 6.0 9.0 14.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
115250 150119 Marko Vejinovic 189715 1990-02-03 185.42 152 29 2007-02-22 00:00:00 59.0 67.0 ... 71.0 56.0 54.0 57.0 41.0 7.0 22.0 64.0 22.0 22.0
115219 12473 Marko Suler 186689 1983-03-09 185.42 174 36 2007-02-22 00:00:00 64.0 69.0 ... 53.0 65.0 64.0 65.0 79.0 4.0 21.0 53.0 21.0 21.0
115203 213487 Marko Scepovic 220121 1991-05-23 190.50 183 28 2007-02-22 00:00:00 69.0 77.0 ... 64.0 57.0 30.0 31.0 38.0 7.0 12.0 6.0 7.0 13.0
115190 425988 Marko Poletanovic 227150 1993-07-20 187.96 159 26 2007-02-22 00:00:00 66.0 74.0 ... 67.0 54.0 53.0 62.0 61.0 14.0 13.0 14.0 10.0 12.0
183977 39902 Zvjezdan Misimovic 102359 1982-06-05 180.34 176 37 2007-02-22 00:00:00 80.0 81.0 ... 88.0 53.0 38.0 32.0 30.0 9.0 9.0 78.0 7.0 15.0

183978 rows × 46 columns

In [55]:
df.drop_duplicates(subset ="player_name", 
                     keep = 'first', inplace = True) 
In [56]:
df.groupby('player_name').count()
Out[56]:
player_api_id player_fifa_api_id birthday height weight age date overall_rating potential preferred_foot ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
player_name
Aaron Appindangoye 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Aaron Cresswell 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Aaron Doran 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Aaron Galindo 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Aaron Hughes 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Zsolt Low 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Zurab Khizanishvili 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
Zvjezdan Misimovic 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
de Oliveira Cleber Monteiro 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1
dos Santos Fabio Junior 1 1 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1 1 1

10848 rows × 45 columns

In [57]:
players_in_2016 = df[df['date'].str.contains('2016')]
In [58]:
db.dfs['players_in_2016'] = players_in_2016



Merging Counteries & Leagues Dataframes

In [59]:
df1, df2 = db.dfs['countries'].copy(), db.dfs['leagues'].copy()
df = db.dfs['leagues_by_countries'] = (df1.merge(df2, left_on="id", right_on="id", how="outer")
                                           .rename(columns={'name_x':"country", 'name_y':"league"}))
df = df.drop("id", axis = 1)
df
Out[59]:
country country_id league
0 Belgium 1 Belgium Jupiler League
1 England 1729 England Premier League
2 France 4769 France Ligue 1
3 Germany 7809 Germany 1. Bundesliga
4 Italy 10257 Italy Serie A
5 Netherlands 13274 Netherlands Eredivisie
6 Poland 15722 Poland Ekstraklasa
7 Portugal 17642 Portugal Liga ZON Sagres
8 Scotland 19694 Scotland Premier League
9 Spain 21518 Spain LIGA BBVA
10 Switzerland 24558 Switzerland Super League

Matches Dataframe

  • New Dataframw matches_with_less_attr with less attributes from matches df
  • Merging with leagues df
In [60]:
df = db.dfs['matches'].copy()
df.head(3)
Out[60]:
id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... SJA VCH VCD VCA GBH GBD GBA BSH BSD BSA
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 4.0 1.65 3.40 4.50 1.78 3.25 4.00 1.73 3.40 4.20
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.8 2.00 3.25 3.25 1.85 3.25 3.75 1.91 3.25 3.60
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 2.5 2.35 3.25 2.65 2.50 3.20 2.50 2.30 3.20 2.75

3 rows × 115 columns

In [61]:
list(df.columns)
Out[61]:
['id',
 'country_id',
 'league_id',
 'season',
 'stage',
 'date',
 'match_api_id',
 'home_team_api_id',
 'away_team_api_id',
 'home_team_goal',
 'away_team_goal',
 'home_player_X1',
 'home_player_X2',
 'home_player_X3',
 'home_player_X4',
 'home_player_X5',
 'home_player_X6',
 'home_player_X7',
 'home_player_X8',
 'home_player_X9',
 'home_player_X10',
 'home_player_X11',
 'away_player_X1',
 'away_player_X2',
 'away_player_X3',
 'away_player_X4',
 'away_player_X5',
 'away_player_X6',
 'away_player_X7',
 'away_player_X8',
 'away_player_X9',
 'away_player_X10',
 'away_player_X11',
 'home_player_Y1',
 'home_player_Y2',
 'home_player_Y3',
 'home_player_Y4',
 'home_player_Y5',
 'home_player_Y6',
 'home_player_Y7',
 'home_player_Y8',
 'home_player_Y9',
 'home_player_Y10',
 'home_player_Y11',
 'away_player_Y1',
 'away_player_Y2',
 'away_player_Y3',
 'away_player_Y4',
 'away_player_Y5',
 'away_player_Y6',
 'away_player_Y7',
 'away_player_Y8',
 'away_player_Y9',
 'away_player_Y10',
 'away_player_Y11',
 'home_player_1',
 'home_player_2',
 'home_player_3',
 'home_player_4',
 'home_player_5',
 'home_player_6',
 'home_player_7',
 'home_player_8',
 'home_player_9',
 'home_player_10',
 'home_player_11',
 'away_player_1',
 'away_player_2',
 'away_player_3',
 'away_player_4',
 'away_player_5',
 'away_player_6',
 'away_player_7',
 'away_player_8',
 'away_player_9',
 'away_player_10',
 'away_player_11',
 'goal',
 'shoton',
 'shotoff',
 'foulcommit',
 'card',
 'cross',
 'corner',
 'possession',
 'B365H',
 'B365D',
 'B365A',
 'BWH',
 'BWD',
 'BWA',
 'IWH',
 'IWD',
 'IWA',
 'LBH',
 'LBD',
 'LBA',
 'PSH',
 'PSD',
 'PSA',
 'WHH',
 'WHD',
 'WHA',
 'SJH',
 'SJD',
 'SJA',
 'VCH',
 'VCD',
 'VCA',
 'GBH',
 'GBD',
 'GBA',
 'BSH',
 'BSD',
 'BSA']
In [62]:
list(df.columns)[:11]
Out[62]:
['id',
 'country_id',
 'league_id',
 'season',
 'stage',
 'date',
 'match_api_id',
 'home_team_api_id',
 'away_team_api_id',
 'home_team_goal',
 'away_team_goal']
In [63]:
db.dfs['matches_with_less_attr'] = df[list(df.columns)[:11]].drop("id",axis=1)
db.dfs['matches_with_less_attr'].head(3)
Out[63]:
country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal away_team_goal
0 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 1
1 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 0
2 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 3
merge leauge data with match data
In [64]:
leagues_and_matches = db.dfs['matches_with_less_attr'].merge(db.dfs['leagues_by_countries'],
                                              left_on="country_id",
                                              right_on="country_id",
                                              how="outer")

db.dfs['leagues_and_matches'] = leagues_and_matches
leagues_and_matches.head(3)
Out[64]:
country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal away_team_goal id country league
0 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 1 1 Belgium Belgium Jupiler League
1 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 0 1 Belgium Belgium Jupiler League
2 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 3 1 Belgium Belgium Jupiler League

Visualization

Matches in our Earth Map 🌍

In [65]:
#getting lat lon info
leagues_by_countries = db.dfs['leagues_by_countries']
lat_long = db.lat_long
country_info  = leagues_by_countries.merge(lat_long, left_on="country", right_on="name", how="left")
country_info  = country_info.drop(["country_id","country_y","name"],axis = 1)


m3 = Basemap(projection='ortho', resolution=None, lat_0=50, lon_0=10,urcrnrlat=80,llcrnrlat=-80)

plt.figure(figsize=(15, 15))

country = list(country_info["country_x"].unique())
c       = sns.color_palette("Set2",len(country))
label   = country

def function(country,c,label):
    lat = list(country_info[country_info["country_x"] == country].latitude)
    lon = list(country_info[country_info["country_x"] == country].longitude)
    x,y = m3(lon,lat)
    m3.plot(x,y,"go",markersize=15,color=j,alpha=.8,label=i)

for i,j in zip(country,c):
    function(i,j,i)

m3.bluemarble(scale=0.5)
plt.legend(loc="center right",frameon=True,prop={"size":15}).get_frame().set_facecolor("white")
plt.title("Countries & Matches")
plt.show()
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).
In [66]:
db.dfs.keys()
Out[66]:
dict_keys(['countries', 'leagues', 'matches', 'players', 'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences', 'players_and_attr', 'players_in_2016', 'leagues_by_countries', 'matches_with_less_attr', 'leagues_and_matches'])
In [67]:
df = db.dfs['leagues_and_matches']
In [68]:
plt.figure(figsize=(8,8))
ax = sns.countplot(y = df["league"],
                   order=df["league"].value_counts().index,
                   linewidth = 1,
                   edgecolor = "k"*df["league"].nunique()
                 )
for i,j in enumerate(df["league"].value_counts().values):
    ax.text(.7,i,j,weight = "bold")
plt.title("Matches by league")
plt.show()
In [69]:
df.groupby("league").agg({"home_team_goal":"sum","away_team_goal":"sum"}).plot(kind="barh",
                                                                                 figsize = (10,10),
                                                                                 edgecolor = "k",
                                                                                 linewidth =1
                                                                                )
plt.title("Home and away goals by league")
plt.legend(loc = "best" , prop = {"size" : 14})
plt.xlabel("total goals")
plt.show()

Visualization of English Premier League Matchday Squads

In [70]:
db.dfs.keys()
Out[70]:
dict_keys(['countries', 'leagues', 'matches', 'players', 'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences', 'players_and_attr', 'players_in_2016', 'leagues_by_countries', 'matches_with_less_attr', 'leagues_and_matches'])
In [71]:
def viz_matchday_squads(matches_df=db.dfs['matches'], players_df = db.dfs["players"], 
                        team_df = db.dfs['teams'], league_id = 1729, match_api_id = 489051):
    r"""
    This method is used to get all the data needed to visualize the arena, teams players and strategies of each team
    """
    
    match_details = matches_df[matches_df['match_api_id'] == match_api_id]
#     print(match_details)
    
    # Position of the GK is set to (1,1) in the dataset which is incorrect
    match_details['home_player_X1'] = 5
    match_details['home_player_Y1'] = 0
    match_details['away_player_X1'] = 5
    match_details['away_player_Y1'] = 0
    
    
    home_x_coordinates, home_y_coordinates = [], []
    away_x_coordinates, away_y_coordinates = [], []
    home_players, away_players = [], []
    
    # Obtain the coordinates to denote each player's position on the field
    for i in range(1, 12):
        home_player_x_coordinate = 'home_player_X%d' % i
        home_player_y_coordinate = 'home_player_Y%d' % i
        away_player_x_coordinate = 'away_player_X%d' % i
        away_player_y_coordinate = 'away_player_Y%d' % i

        home_x_coordinates.append(match_details[home_player_x_coordinate].iloc[0])
        home_y_coordinates.append((match_details[home_player_y_coordinate].iloc[0] + 15))
        away_x_coordinates.append(match_details[away_player_x_coordinate].iloc[0])
        away_y_coordinates.append((match_details[away_player_y_coordinate].iloc[0] + 35))

        # Obtain the players' names
        home_players.append(list(players_df[players_df['player_api_id'] 
                                            == match_details['home_player_%d' % i].iloc[0]]['player_name'])[0])

        away_players.append(list(players_df[players_df['player_api_id']
                                            == match_details['away_player_%d' % i].iloc[0]]['player_name'])[0])
        
        
    # Names of the Teams
    home_team = team_df[team_df['team_api_id'] == match_details['home_team_api_id'].iloc[0]]['team_long_name'].iloc[0]
    away_team = team_df[team_df['team_api_id'] == match_details['away_team_api_id'].iloc[0]]['team_long_name'].iloc[0]
    home_team, away_team
    
    
    #Formations of the Teams
    home_formation = np.unique(home_y_coordinates, return_counts = True)[1]
    away_formation = np.unique(away_y_coordinates, return_counts = True)[1]    

    img_path = PATH/'arena.jpg'
    
    
    # Home team in Orange
    plt.figure(figsize=(20,13))
    for label, x, y in zip(home_players, home_x_coordinates, home_y_coordinates):
        plt.annotate(
            label,
            xy = (x, y), xytext = (len(label)*-4, 20),
            textcoords = 'offset points',
            fontsize= 15,
            color = '#F2F3F4'
        )
    img = imread(img_path) #Background field image
    plt.title(home_team, loc = 'left', fontsize = 25)
    plt.title("Home Team", fontsize = 25)

    formation = "Formation: "
    for i in range(1,len(home_formation)):
        formation = formation + str(home_formation[i]) + "-"
    formation = formation[:-1]

    plt.title(formation, loc = 'right', fontsize = 25)
    plt.scatter(home_x_coordinates, home_y_coordinates, s = 500, color = '#F57C00', zorder = 2)
    plt.imshow(scipy.ndimage.rotate(img, 270), zorder = 1, extent=[min(home_x_coordinates)-1, max(home_x_coordinates)+1, min(home_y_coordinates)-1, max(home_y_coordinates)+1.7], aspect = 'auto')
    plt.gca().invert_yaxis() # Invert y axis to start with the goalkeeper at the top


    # Away team in Blue
    plt.figure(figsize=(20, 13))
    plt.gca().invert_xaxis() # Invert x axis to have right wingers on the right
    for label, x, y in zip(away_players, away_x_coordinates, away_y_coordinates):
        plt.annotate(
            label,
            xy = (x, y), xytext = (len(label)*-4, -30),
            textcoords = 'offset points',
            fontsize= 15,
            color = '#F2F3F4'
        )
    img = imread(img_path)
    plt.title(away_team, loc = 'left', fontsize = 25)
    plt.title("Away Team", fontsize = 25)

    formation = "Formation: "
    for i in range(1,len(away_formation)):
        formation = formation + str(away_formation[i]) + "-"
    formation = formation[:-1]

    plt.title(formation, loc = 'right', fontsize = 25)
    plt.scatter(away_x_coordinates, away_y_coordinates, s = 500, color = '#0277BD', zorder = 2)
    plt.imshow(scipy.ndimage.rotate(img, 270), zorder = 1, extent=[min(away_x_coordinates)-1, max(away_x_coordinates)+1, min(away_y_coordinates)-1, max(away_y_coordinates)+1.6], aspect = 'auto')
    plt.show()
In [72]:
viz_matchday_squads()
In [73]:
viz_matchday_squads(league_id=24558, match_api_id=1992095)

Questions & Hypothesis

Is there a significant difference in win rate for home teams vs. away teams?

Is there a statistical difference in the odds of winning a game when a team is playing in front of their home crowd?¶ H0 (Null Hypothesis): mean_win_rate_home = mean_win_rate_away there is no statistically significant difference in the odds of winning a game when a team is at playing at home vs. when a team is playing away HA (Alternative Hypothesis): mean_win_rate_home != mean_win_rate_away

there is a statistically significant difference in the odds of winning a game when a team is playing at home vs. when a team is playing away Alpha = 0.05

Assumptions for a 2-sample T-test: Data is collected randomly Data is independent Data is approximately normally distributed

In [74]:
db.dfs.keys()
Out[74]:
dict_keys(['countries', 'leagues', 'matches', 'players', 'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences', 'players_and_attr', 'players_in_2016', 'leagues_by_countries', 'matches_with_less_attr', 'leagues_and_matches'])

create new columns home_team_win & away_team win with binary values as such:

  • Home team winning = 1,
  • Tie=0,
  • Away team winning = 0
In [75]:
matches_df = db.dfs['matches']
In [76]:
matches_df['home_team_win'] = np.zeros
matches_df['away_team_win'] = np.zeros
In [77]:
# Home Team Values

#WIN
matches_df['home_team_win'].loc[matches_df['home_team_goal'] > matches_df['away_team_goal']] = 1
#LOSS
matches_df['home_team_win'].loc[matches_df['home_team_goal'] < matches_df['away_team_goal']] = 0
#TIE
matches_df['home_team_win'].loc[matches_df['home_team_goal'] == matches_df['away_team_goal']] = 0
In [78]:
# Away Team Values

#WIN
matches_df['away_team_win'].loc[matches_df['home_team_goal'] < matches_df['away_team_goal']] = 1
#LOSS
matches_df['away_team_win'].loc[matches_df['home_team_goal'] > matches_df['away_team_goal']] = 0
#TIE
matches_df['away_team_win'].loc[matches_df['home_team_goal'] == matches_df['away_team_goal']] = 0
In [79]:
#create numpy arrays
home_team_win_array = np.array(matches_df['home_team_win'])
away_team_win_array = np.array(matches_df['away_team_win'])

#the means of each array represent the win rate: win rate = matches won / matches NOT won (tie or loss)
x_bar_home = np.mean(home_team_win_array)
x_bar_away = np.mean(away_team_win_array)

#calculate the difference between the means, using all rows in the dataset
diff = x_bar_home - x_bar_away
diff
Out[79]:
0.17133069017283187
In [80]:
len(home_team_win_array), len(away_team_win_array)
Out[80]:
(25979, 25979)

Rate of Winning & Difference

In [81]:
n_home = len(home_team_win_array)

n_away = len(away_team_win_array)

home_wins = sum(home_team_win_array)
away_wins = sum(away_team_win_array)

home_win_rate = home_wins/n_home
away_win_rate = away_wins/n_home

diff = home_win_rate-away_win_rate
print(f"Home Win Rate: {home_win_rate} \nAway Win Rate: {away_win_rate} \nDifference: {diff}")
Home Win Rate: 0.45871665576042187 
Away Win Rate: 0.28738596558759 
Difference: 0.17133069017283187
In [82]:
var_home = home_team_win_array.var()
var_away = away_team_win_array.var()
var_home, var_away
Out[82]:
(0.24829568548839653, 0.20479527237087852)
In [83]:
# TODO: Cohen's d: Effect Size
pooled_var = (n_home * var_home + n_away * var_away) / (n_home + n_away)
cohens_d = (diff) / np.sqrt(pooled_var)
cohens_d
Out[83]:
0.35996267005447524

Finding Ideal Sample Size given Effect Size, desired Power, and desired Alpha

In [84]:
# Initialize parameters
effect = cohens_d
alpha = 0.05
power = 0.95

# sample 2 / sample 1   
ratio = len(away_team_win_array) / len(home_team_win_array)

# Perform power analysis
analysis = TTestIndPower()
result = analysis.solve_power(effect, power=power, nobs1=None,ratio=ratio, alpha=alpha)
print(f"The minimum sample size: {result}")
print(f"Number of matches played: {len(away_team_win_array)}")
The minimum sample size: 201.5427376165529
Number of matches played: 25979

Using Bootstrapping to sample from the ~25K matches, specifying # of iterations & sample size of each iteration

In [85]:
sample_means_home = []
for _ in range(1000):
    sample_mean = np.random.choice(home_team_win_array, size=202).mean()
    sample_means_home.append(sample_mean)

sample_means_away = []
for _ in range(1000):
    sample_mean = np.random.choice(away_team_win_array, size=202).mean()
    sample_means_away.append(sample_mean)
len(sample_means_home), len(sample_means_away)
Out[85]:
(1000, 1000)
In [86]:
sample_means_home[:10], sample_means_away[:10]
Out[86]:
([0.4504950495049505,
  0.4405940594059406,
  0.3910891089108911,
  0.4900990099009901,
  0.504950495049505,
  0.47029702970297027,
  0.45544554455445546,
  0.43564356435643564,
  0.43564356435643564,
  0.4752475247524752],
 [0.297029702970297,
  0.2524752475247525,
  0.297029702970297,
  0.2722772277227723,
  0.2871287128712871,
  0.3217821782178218,
  0.30198019801980197,
  0.297029702970297,
  0.297029702970297,
  0.26732673267326734])

functions to calculate individual sample variances, pooled sample variance, and our t-statistic in a 2-sample T-test

In [87]:
def calc_variance(sample):
    '''Computes the variance a list of values'''
    sample_mean = np.mean(sample)
    return sum([(i - sample_mean)**2 for i in sample])

def calc_sample_variance(sample1, sample2):
    '''Computes the pooled variance 2 lists of values, using the calc_variance function'''
    n_1, n_2 = len(sample1), len(sample2)
    var1, var2 = calc_variance(sample1), calc_variance(sample2)
    return (var1 + var2) / ((n_1 + n_2) - 2)

def calc_twosample_tstatistic(expr, ctrl):
    '''Computes the 2-sample T-stat of 2 lists of values, using the calc_sample_variance function'''
    expr_mean, ctrl_mean = np.mean(expr), np.mean(ctrl)
    n_e, n_c = len(expr), len(ctrl)
    samp_var = calc_sample_variance(expr,ctrl)
    t = (expr_mean - ctrl_mean) / np.sqrt(samp_var * ((1/n_e)+(1/n_c)))
    return t
In [88]:
t_stat = calc_twosample_tstatistic(sample_means_home, sample_means_away)

t_stat
Out[88]:
113.3472736492802
In [89]:
stats.ttest_ind(sample_means_home, sample_means_away)
Out[89]:
Ttest_indResult(statistic=113.34727364928037, pvalue=0.0)

Plotting distributions of sample_means_home (Blue) vs. sample_means_away (Orange)

In [90]:
sns.set(color_codes=True)
sns.set(rc={'figure.figsize':(12,10)})
plt.title('Bootstrapped Win Rate Frequencies', fontsize='25')
plt.xlabel('Win Rate', fontsize='20')
plt.ylabel('Win Rate Frequency', fontsize='20')
sns.distplot(sample_means_home, label='Home Win Rates') # Blue distribution
sns.distplot(sample_means_away, label='Away Win Rates') # Orange distribution
plt.legend()
plt.show()

Visualizing the T-statistic & negative T-statistic in a probability density function graph

In [91]:
def visualize_t(t_stat, n_control, n_experimental):
    # initialize a matplotlib "figure"
    fig = plt.figure(figsize=(8,5))
    ax = fig.gca()
    # generate points on the x axis between -20 and 20:
    xs = np.linspace(-20, 20, 500)

    # use stats.t.pdf to get values on the probability density function for the t-distribution
    ys= stats.t.pdf(xs, (n_control+n_experimental-2), 0, 1)
    ax.plot(xs, ys, linewidth=3, color='darkred')

    ax.axvline(t_stat, color='black', linestyle='--', lw=5)
    ax.axvline(-t_stat, color='black', linestyle='--', lw=5)
    plt.xlabel('t-stat', fontsize='20')
    plt.ylabel('probability density', fontsize='20')
    plt.title('Probability Density of t-test',fontsize='25')

    plt.show()
    return None

n_home = len(home_team_win_array)
n_away = len(away_team_win_array)
visualize_t(t_stat, n_home, n_away)
In [92]:
## Calculate p_value manually
# Lower tail comulative density function returns area under the lower tail curve
df = len(sample_means_home)+len(sample_means_home)-2

tail = stats.t.cdf(-t_stat, df, 0, 1)

p_value = tail*2
print(p_value)
0.0
In [93]:
#DOUBLE CHECK WITH SCIPY
stats.t.sf(abs(t_stat), len(sample_means_home)+len(sample_means_away)-2)*2
Out[93]:
0.0
In [94]:
#TRIPLE CHECK WITH SCIPY
stats.ttest_ind(sample_means_home, sample_means_away)
Out[94]:
Ttest_indResult(statistic=113.34727364928037, pvalue=0.0)

Visualizing Home-Field Advantage

In [95]:
result = pd.merge(matches_df,
                  db.dfs['teams'][['team_long_name','team_api_id']],
                  left_on='home_team_api_id',
                  right_on='team_api_id',
                  how='left')
result.rename(columns={"team_long_name": "home_team_name"}, inplace=True)

result = result.drop(columns='team_api_id')

results = pd.merge(result,
                  db.dfs['teams'][['team_long_name','team_api_id']],
                  left_on='away_team_api_id',
                  right_on='team_api_id',
                  how='left')

results.rename(columns={"team_long_name": "away_team_name"}, inplace=True)

results = results.drop(columns='team_api_id')
In [96]:
results['winning_team'] = np.nan
results.head()
Out[96]:
id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... GBD GBA BSH BSD BSA home_team_win away_team_win home_team_name away_team_name winning_team
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 3.25 4.00 1.73 3.40 4.20 0 0 KRC Genk Beerschot AC NaN
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.25 3.75 1.91 3.25 3.60 0 0 SV Zulte-Waregem Sporting Lokeren NaN
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 3.20 2.50 2.30 3.20 2.75 0 1 KSV Cercle Brugge RSC Anderlecht NaN
3 4 1 1 2008/2009 1 2008-08-17 00:00:00 492476 9991 9998 5 ... 3.75 5.50 1.44 3.75 6.50 1 0 KAA Gent RAEC Mons NaN
4 5 1 1 2008/2009 1 2008-08-16 00:00:00 492477 7947 9985 1 ... 3.50 1.65 4.75 3.30 1.67 0 1 FCV Dender EH Standard de Liège NaN

5 rows × 120 columns

In [97]:
results['winning_team'].loc[results['home_team_goal'] > results['away_team_goal']] = results['home_team_name']
results['winning_team'].loc[results['home_team_goal'] < results['away_team_goal']] = results['away_team_name']
In [98]:
results.head()
Out[98]:
id country_id league_id season stage date match_api_id home_team_api_id away_team_api_id home_team_goal ... GBD GBA BSH BSD BSA home_team_win away_team_win home_team_name away_team_name winning_team
0 1 1 1 2008/2009 1 2008-08-17 00:00:00 492473 9987 9993 1 ... 3.25 4.00 1.73 3.40 4.20 0 0 KRC Genk Beerschot AC NaN
1 2 1 1 2008/2009 1 2008-08-16 00:00:00 492474 10000 9994 0 ... 3.25 3.75 1.91 3.25 3.60 0 0 SV Zulte-Waregem Sporting Lokeren NaN
2 3 1 1 2008/2009 1 2008-08-16 00:00:00 492475 9984 8635 0 ... 3.20 2.50 2.30 3.20 2.75 0 1 KSV Cercle Brugge RSC Anderlecht RSC Anderlecht
3 4 1 1 2008/2009 1 2008-08-17 00:00:00 492476 9991 9998 5 ... 3.75 5.50 1.44 3.75 6.50 1 0 KAA Gent RAEC Mons KAA Gent
4 5 1 1 2008/2009 1 2008-08-16 00:00:00 492477 7947 9985 1 ... 3.50 1.65 4.75 3.30 1.67 0 1 FCV Dender EH Standard de Liège Standard de Liège

5 rows × 120 columns

In [99]:
home_team_win_df = results.groupby("home_team_name").agg({
        "home_team_win": "mean",
    })

home_team_win_df.sort_values(by= 'home_team_win',ascending=False)
Out[99]:
home_team_win
home_team_name
FC Barcelona 0.861842
Real Madrid CF 0.848684
SL Benfica 0.822581
FC Porto 0.822581
FC Bayern Munich 0.801471
... ...
DSC Arminia Bielefeld 0.117647
AC Arles-Avignon 0.105263
Dunfermline Athletic 0.052632
Córdoba CF 0.052632
SpVgg Greuther Fürth 0.000000

296 rows × 1 columns

In [100]:
away_team_win_df = results.groupby("away_team_name").agg({
        "away_team_win": "mean",
    })

away_team_win_df.sort_values(by= 'away_team_win',ascending=False)
Out[100]:
away_team_win
away_team_name
Rangers 0.684211
FC Barcelona 0.677632
SL Benfica 0.669355
FC Porto 0.653226
Real Madrid CF 0.651316
... ...
CD Tenerife 0.052632
AC Arles-Avignon 0.052632
CD Numancia 0.052632
Brescia 0.052632
FC Metz 0.052632

296 rows × 1 columns

In [101]:
plt.figure(figsize=(16,8)) 
plt.plot(home_team_win_df,away_team_win_df,'o', alpha = 0.4)
plt.plot([0,1],[0,1])
plt.xlabel('Home Win Rate',fontsize='20')
plt.ylabel('Away Win Rate',fontsize='20')
plt.title('Home Win Rate vs Away Win Rate',fontsize='20')
plt.xlim([0,1])
plt.ylim([0,1])
Out[101]:
(0, 1)

Conclusion: There is a significant difference in win rate for home teams vs. away teams. Home-field advantage definitely exists!






In [102]:
db.dfs.keys()
Out[102]:
dict_keys(['countries', 'leagues', 'matches', 'players', 'player_attributes', 'teams', 'team_attributes', 'sqlite_sequences', 'players_and_attr', 'players_in_2016', 'leagues_by_countries', 'matches_with_less_attr', 'leagues_and_matches'])
In [103]:
df = db.dfs['players_and_attr']
df
Out[103]:
player_api_id player_name player_fifa_api_id birthday height weight age date overall_rating potential ... vision penalties marking standing_tackle sliding_tackle gk_diving gk_handling gk_kicking gk_positioning gk_reflexes
95620 307224 Kevin Koubemba 208127 1993-03-23 193.04 198 26 2016-07-07 00:00:00 64.0 68.0 ... 55.0 65.0 22.0 22.0 25.0 12.0 12.0 7.0 11.0 12.0
57229 184521 Florian Lejeune 197948 1991-05-20 187.96 179 28 2016-07-07 00:00:00 73.0 77.0 ... 32.0 43.0 74.0 75.0 69.0 11.0 15.0 15.0 12.0 7.0
181048 512726 Yanis Mbombo Lokwa 221274 1994-04-08 177.80 172 25 2016-07-07 00:00:00 63.0 72.0 ... 48.0 59.0 15.0 16.0 12.0 11.0 12.0 12.0 12.0 7.0
178639 450002 Wallace 216437 1993-10-14 190.50 183 26 2016-07-07 00:00:00 74.0 82.0 ... 31.0 45.0 76.0 78.0 74.0 15.0 11.0 11.0 10.0 11.0
153508 45400 Ronnie Schwartz 172555 1989-08-29 182.88 176 30 2016-07-07 00:00:00 68.0 70.0 ... 45.0 66.0 23.0 17.0 23.0 13.0 11.0 6.0 9.0 14.0
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
77471 22732 Janicio Martins 171790 1979-11-30 180.34 157 39 2008-08-30 00:00:00 69.0 72.0 ... 44.0 67.0 72.0 75.0 59.0 9.0 23.0 56.0 23.0 23.0
158240 16368 Savo Pavicevic 181818 1980-12-11 185.42 190 38 2008-08-30 00:00:00 67.0 72.0 ... 64.0 43.0 71.0 67.0 64.0 9.0 21.0 57.0 21.0 21.0
78022 37976 Jason Vandelannoite 169170 1986-11-06 177.80 176 33 2008-08-30 00:00:00 64.0 68.0 ... 60.0 57.0 63.0 66.0 11.0 5.0 22.0 56.0 22.0 22.0
144773 359194 Quini 174009 1985-10-29 180.34 159 34 2007-08-30 00:00:00 56.0 70.0 ... 65.0 56.0 23.0 23.0 45.0 18.0 23.0 40.0 23.0 23.0
80570 33688 Jeremy Gavanon 150550 1983-09-20 182.88 163 36 2007-08-30 00:00:00 66.0 74.0 ... 54.0 73.0 25.0 25.0 53.0 63.0 67.0 65.0 64.0 73.0

10848 rows × 46 columns

In [104]:
def show_player_stats(name='Lionel Messi'):
    # Players: 'Cristiano Ronaldo', 'Lionel Messi', 'Neymar', 'Heung-Min Son'...
    player_info = db.dfs['players_and_attr']
    player = player_info[player_info["player_name"] == name]
    cols = ['player_name','overall_rating', 'finishing', 
            'heading_accuracy', 'short_passing', 'dribbling', 
            'sprint_speed', 'shot_power', 'jumping', 'stamina',
            'strength', 'positioning', 'penalties', 'sliding_tackle']

    player = player[cols]
    player = player.groupby("player_name")[cols].mean().reset_index()

    plt.figure(figsize=(8,8))
    ax = plt.subplot(projection="polar")
    cats = list(player)[1:]
    N    = len(cats)

    mean_values = player_info.iloc[:,:].mean()
    mean_values = mean_values[cols]
    
    values = mean_values.drop("player_name").values.flatten().tolist()
    values += values[:1]
    angles = [n / float(N)*2* math.pi for n in range(N)]
    angles += angles[:1]

    plt.xticks(angles[:-1],cats,color="r",size=7)
    plt.ylim([0,100])
    plt.plot(angles,values,color='r',linewidth=2,linestyle="solid")
    plt.fill(angles,values,color='r',alpha=1)

    values = player.loc[0].drop("player_name").values.flatten().tolist()
    values += values[:1]
    angles = [n / float(N)*2* math.pi for n in range(N)]
    angles += angles[:1]

    plt.xticks(angles[:-1],cats,color="k",size=12)
    plt.ylim([0,100])
    plt.plot(angles,values,color='y',linewidth=3,linestyle="solid")
    plt.fill(angles,values,color='y',alpha=0.5)

    plt.gca().legend(('Average', name), bbox_to_anchor=(1, 0.5, 0.5, 0.5), loc=8)
    plt.title(name,color="b", fontsize=18)
    plt.subplots_adjust(wspace=.4,hspace=.4)
In [105]:
show_player_stats()
In [106]:
show_player_stats('Cristiano Ronaldo')

Which features have the highest correlation with overall_rating?

In [107]:
df = db.dfs['player_attributes']
In [108]:
df['overall_rating'].corr(df['penalties'])
Out[108]:
0.3926222088639533
In [109]:
potential_features = ['acceleration', 'curve', 'free_kick_accuracy', 'ball_control', 'shot_power', 'stamina']
In [110]:
# check how the features are correlated with the overall ratings

for f in potential_features:
    related = df['overall_rating'].corr(df[f])
    print(f"{f}: {related}")
acceleration: 0.2452063826505644
curve: 0.3526143480590304
free_kick_accuracy: 0.3494238194241043
ball_control: 0.4439779241084229
shot_power: 0.4276109369596505
stamina: 0.3269068736524547
In [111]:
cols = ['potential',  'crossing', 'finishing', 'heading_accuracy',
       'short_passing', 'volleys', 'dribbling', 'curve', 'free_kick_accuracy',
       'long_passing', 'ball_control', 'acceleration', 'sprint_speed',
       'agility', 'reactions', 'balance', 'shot_power', 'jumping', 'stamina',
       'strength', 'long_shots', 'aggression', 'interceptions', 'positioning',
       'vision', 'penalties', 'marking', 'standing_tackle', 'sliding_tackle',
       'gk_diving', 'gk_handling', 'gk_kicking', 'gk_positioning',
       'gk_reflexes']
In [112]:
# create a list containing Pearson's correlation between 'overall_rating' with each column in cols
correlations = [ df['overall_rating'].corr(df[f]) for f in cols ]
In [113]:
len(cols), len(correlations)
Out[113]:
(34, 34)
In [114]:
# create a function for plotting a dataframe with string columns and numeric values

def plot_dataframe(df, y_label):  
    color='coral'
    fig = plt.gcf()
    fig.set_size_inches(20, 12)
    plt.ylabel(y_label)

    ax = df.correlation.plot(linewidth=3.3, color=color)
    ax.set_xticks(df.index)
    ax.set_xticklabels(df.attributes, rotation=75); #Notice the ; (remove it and see what happens !)
    plt.show()
In [115]:
# create a dataframe using cols and correlations

df2 = pd.DataFrame({'attributes': cols, 'correlation': correlations})
In [116]:
# let's plot above dataframe using the function we created
    
plot_dataframe(df2, 'Player\'s Overall Rating')
In [117]:
# create a dataset containing only the birthday, date and overall_ratings from the Field Players dataset.
df = db.dfs['players_and_attr'][['birthday','date','overall_rating']]
df.head(2)
Out[117]:
birthday date overall_rating
95620 1993-03-23 2016-07-07 00:00:00 64.0
57229 1991-05-20 2016-07-07 00:00:00 73.0
In [118]:
# converting the birthday and date columns to date type
df['birthday'] = pd.to_datetime(df['birthday'])
df['date'] = pd.to_datetime(df['date'])

# adding a column listing the age for each row
df['age'] = df['date'].dt.year - df['birthday'].dt.year
df.head()
Out[118]:
birthday date overall_rating age
95620 1993-03-23 2016-07-07 64.0 23
57229 1991-05-20 2016-07-07 73.0 25
181048 1994-04-08 2016-07-07 63.0 22
178639 1993-10-14 2016-07-07 74.0 23
153508 1989-08-29 2016-07-07 68.0 27
In [119]:
# finding the average ratings for each age group in the dataset
df_age_ratings = df.groupby('age').mean()

# finding the number of players in each group
df.groupby('age').count()
Out[119]:
birthday date overall_rating
age
17 9 9 9
18 40 40 40
19 164 164 164
20 336 336 336
21 437 437 437
22 591 591 591
23 598 598 598
24 709 709 709
25 748 748 748
26 752 752 752
27 771 771 771
28 829 829 829
29 786 786 786
30 696 696 696
31 640 640 640
32 625 625 625
33 545 545 545
34 483 483 483
35 431 431 431
36 291 291 291
37 165 165 165
38 103 103 103
39 36 36 36
40 28 28 28
41 22 22 22
42 7 7 7
43 4 4 4
44 2 2 2
In [120]:
# setting up the parameters and plotting the scatter plot

locations = df_age_ratings.index.values
height = df_age_ratings['overall_rating']
plt.style.use('ggplot')

# plotting scatter plot
plt.plot(locations, height,'-o')

# set title and labels
plt.title('Age Vs Overall Rating Relationship Chart')
plt.xlabel('Age of the players')
plt.ylabel('Overall Ratings')
plt.rcParams['figure.figsize'] = (8,6)